重建基于JavaScript数组的索引

时间:2018-11-07 02:36:05

标签: 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"]
]

初始数组中的数字充当重构数组中水果数据的索引。因此,Grape和Orange放在索引0中,Mango放在索引1中,依此类推。我如何实现的?谢谢。

2 个答案:

答案 0 :(得分:1)

使用Array.reduceObject.assign

使用reduce,我们将创建结果array,其中,对于原始数组中的每个条目,我们将添加/更新索引(c[0])的值。

let arr1 = [["0", "Grape"],["0", "Orange"],["1", "Mango"],["2", "Strawberry"],["2", "Banana"],["3", "Watermelon"]];

let arr2 = arr1.reduce((a,c) => Object.assign(a, {[c[0]]:(a[c[0]] || []).concat(c[1])}), []);
console.log(arr2);

答案 1 :(得分:0)

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]);
}