猿问

js根据条件将一个一维对象数组转为二维数组

请问下,如何把下面的数组arrayFirst,根据相同的index转成arrayTwo

var arrayFirst = [{    index: 1,    datas: han
},
{    index: 1,    datas: hu
}, {    index: 2,    datas: zhang
},
{    index: 2,    datas: wang
}

]

var arrayTwo = [[{    index: 1,    datas: han
},
{    index: 1,    datas: hu
}], [{    index: 2,    datas: zhang
},
{    index: 2,    datas: wang
}]]

看着很简单,但是确不知道怎么做才好


Helenr
浏览 2228回答 2
2回答

达令说

// 创建映射var map = arrayFirst.reduce((p, c) => [p[c.index] = p[c.index] || [],                                        p[c.index].push(c), p][2], {})// 获取映射分类下的数组                                       var result = Object.keys(map).map(i => map[i])

白板的微信

var&nbsp;arrayTwo&nbsp;=&nbsp;[];var&nbsp;indexGroup&nbsp;=&nbsp;arrayFirst.map(v&nbsp;=>&nbsp;v.index);var&nbsp;flag&nbsp;=&nbsp;[];for(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i<indexGroup.length;&nbsp;i++)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;indexGroup[i];&nbsp;&nbsp;&nbsp;&nbsp;if(flag[index])&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;flag[index]&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;groupArray&nbsp;=&nbsp;arrayFirst.filter(v&nbsp;=>&nbsp;v.index&nbsp;===&nbsp;index); &nbsp;&nbsp;&nbsp;&nbsp;arrayTwo.push(groupArray); }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答