我有一组数据
const allNumbers = [
{ type: "smallNumbers", numbers: [1, 2, 3] },
{ type: "bigNumbers", numbers: [4, 5, 6] }
];
需要成型的
[[1], [2], [3], [4, 5, 6]]
其中smallNumbers
类型的对象中的数字分别单独包装在一个数组中,而bigNumbers
类型的对象中的数字仅保留原样。
如何使用Lodash链(如果可能的话)或普通功能的JS做到这一点?
答案 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));