Javascript 基于索引的数组重构
假设我有一个JavaScript数组,如下所示:Javascript 基于索引的数组重构,javascript,arrays,indexing,logic,Javascript,Arrays,Indexing,Logic,假设我有一个JavaScript数组,如下所示: Array:[ ["0", "Grape"],["0", "Orange"],["1", "Mango"],["2", "Strawberry"], ["2", "Banana"],["3", "Watermelon"] ] 我想重建为: Array:[ ["Grape", "Orange"],["Mango"],["Strawberry", "Banana"],["Watermelon"] ] 初始数组中的数
Array:[
["0", "Grape"],["0", "Orange"],["1", "Mango"],["2", "Strawberry"],
["2", "Banana"],["3", "Watermelon"]
]
我想重建为:
Array:[
["Grape", "Orange"],["Mango"],["Strawberry", "Banana"],["Watermelon"]
]
初始数组中的数字作为重构数组中水果数据的索引。因此,葡萄和橙子被放在指数0中,芒果被放在指数1中,依此类推。我是如何做到这一点的?多谢各位 使用和
使用reduce
,我们正在创建结果数组
,其中对于原始数组中的每个条目,我们正在添加/更新索引的值(c[0]
)
让arr1=[“0”,“葡萄”],[“0”,“橙色”],[“1”,“芒果”],[“2”,“草莓”],[“2”,“香蕉”],[“3”,“西瓜”];
设arr2=arr1.reduce((a,c)=>Object.assign(a,{[c[0]]:(a[c[0]]| |[])。concat(c[1]),[]);
控制台日志(arr2)代码>a是您的初始数组:
这里我假设索引从0开始,是整数,并且是排序的
a = [["0", "Grape"],["0", "Orange"],["1", "Mango"],["2", "Strawberry"],["2", "Banana"],["3", "Watermelon"]]
b=[];
for (i in a) {
if (a[i][0] >= b.length)
b.push([]);
(b[b.length-1]).push(a[i][1]);
}