使用Lodash链或功能性JS挑战进行数据处理

时间:2019-01-10 05:58:17

标签: javascript lodash data-manipulation

我有一组数据

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 :(得分:1)

您可以使用_.flatMap()迭代对象,并使用_.chunks()(默认块大小为1)将.map拆分为子数组:

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