ES6 Создать массив массивов, который содержит пары - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть следующая модель данных. Я пытаюсь массив уменьшить и создать пары объектов из него. Кроме того, если будет нечетное число, я добавлю его к последней паре.

Данные даны:

const pairs = [ {name: bob, value: foo}, {name: jane, value: foo}, {name: mary, value: foo}, {name: elizabeth, value: foo}, {name: colin, value: foo}]

Хотел бы получить следующий вывод:

const pairs = [ 

    [{name: bob, value: foo}, {name: jane, value: foo}],
    [{name: mary, value: foo}, {name: elizabeth, value: foo}, {name: colin, value: foo}]
]

Что я пробовал до сих пор:

const result = pairs.reduce((acc, curr, i, array) => {
    const acc = acc.length % 3 === 0 ? acc.slice(acc.length -1, acc.length) : acc.push(curr);
    return acc
}, []);

Есть ли простой способ сделать это с Array.reduce ()?

1 Ответ

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

const pairs = [
  {name: 'bob',       value: 'foo'},
  {name: 'jane',      value: 'foo'},
  {name: 'mary',      value: 'foo'},
  {name: 'elizabeth', value: 'foo'},
  {name: 'colin',     value: 'foo'}
];

const flooredHalf = parseInt(pairs.length / 2);
const result = new Array(flooredHalf);
for (let i = 0; i <= flooredHalf; i += 2) {
  result[i / 2] = pairs.slice(i, (i + 3 === pairs.length ? i + 3 : i + 2));
}

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