javascript - создать многомерный массив из другого многомерного массива - PullRequest
0 голосов
/ 21 ноября 2019

Мне нужно сгенерировать многомерный массив из многомерного массива.
Например, мой массив:

var codes = [

['2', '12521'],
['3', '32344'],
['3', '35213'],
['4', '42312'],
['4', '41122'],
['5', '51111']

];

И мой новый массив должен иметь такую ​​структуру:

[0] => Array
    (
        [0] => Array
            (
               [0] => '2'
               [1] => '12521'
            }
    )  
[1] => Array
    (
        [0] => Array
            (
               [0] => '3'
               [1] => '32344'
            }
        [1] => Array
            (
               [0] => '3'
               [1] => '35213'
            }
    )  
[2] => Array
    (
        [0] => Array
            (
               [0] => '4'
               [1] => '42312'
            }
        [1] => Array
            (
               [0] => '4'
               [1] => '41122'
            }
    )  
...

Я пытался использовать циклы for для заполнения новогомассив, но изо всех сил пытался это сделать. Пожалуйста помоги. Спасибо!

1 Ответ

1 голос
/ 21 ноября 2019

Вы можете использовать простую операцию reduce(), которая отслеживает текущее значение, на котором основана ваша группировка:

const codes = [
  ['2', '12521'],
  ['3', '32344'],
  ['3', '35213'],
  ['4', '42312'],
  ['4', '41122'],
  ['5', '51111', '']
];

const output = codes.reduce(({result, current}, [x, ...y]) => {
  if (current !== x) result.push([]);
  result[result.length - 1].push([x, ...y]);
  
  return {result, current: x};
}, {result: []}).result;

console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...