Обработка данных с использованием цепочек Lodash или функциональной JS-задачи - PullRequest
0 голосов
/ 10 января 2019

У меня есть набор данных

const allNumbers = [
    { type: "smallNumbers", numbers: [1, 2, 3] },
    { type: "bigNumbers", numbers: [4, 5, 6] }
];

, которое нужно отлить в

[[1], [2], [3], [4, 5, 6]]

где числа в объектах типа smallNumbers каждый индивидуально заключены в массив, а числа в объектах типа bigNumbers просто оставлены как есть.

Как бы я это сделал с цепочкой Lodash (если возможно) или простым функционалом JS?

1 Ответ

0 голосов
/ 10 января 2019

Вы можете использовать _.flatMap() для итерации объектов и использовать _.chunks() (размер фрагмента по умолчанию равен 1), чтобы разделить smallNumbers на подмассивы:

const allNumbers = [
  { type: "smallNumbers", numbers: [1, 2, 3] },
  { type: "bigNumbers", numbers: [4, 5, 6] }
];

const result = _.flatMap(allNumbers, ({ type, numbers }) => 
  _.eq(type, 'smallNumbers') ? _.chunk(numbers) : [numbers]
);

console.log(JSON.stringify(result));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...