Реконструировать массив на основе индекса JavaScript - PullRequest
0 голосов
/ 07 ноября 2018

предположим, у меня есть массив в JavaScript, как написано ниже:

Array:[  
    ["0", "Grape"],["0", "Orange"],["1", "Mango"],["2", "Strawberry"],
    ["2", "Banana"],["3", "Watermelon"]
]

, который я хочу восстановить как:

Array:[  
    ["Grape", "Orange"],["Mango"],["Strawberry", "Banana"],["Watermelon"]
]

Числа в исходном массиве действуют как индексы данных фруктов в восстановленном массиве. Итак, виноград и апельсин помещаются в индекс 0, манго в индекс 1 и так далее. Как мне этого добиться? Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

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]);
}
0 голосов
/ 07 ноября 2018

Использование Array.reduce и Object.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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...