合并对象内的所有数组

Merge all arrays inside of an object

let fruit = {
    apple: [1, 2],
    orange: [3, 4],
    banana: [5, 6],
};

let allFruits = fruit.apple.concat(fruit.orange).concat(fruit.banana);

我可以做这样的事情,但是如果我有 20 个水果怎么办...还有其他方法可以使用 lodash 吗?

这里不需要使用lodash。您需要做的就是获取所有对象值的列表(Object.value()), then flatted it (with yourArray.flat()

let fruit = {
    apple: [1, 2],
    orange: [3, 4],
    banana: [5, 6],
};

console.log(Object.values(fruit).flat())

为了完整起见,以下是使用 lodash 的方法:

_.flatMap(fruit)

是的,就这么简单。这里有两个隐藏的技巧:

  • flatMap (unlike flatten) 与集合一起工作,并为对象调用 Object.values()
  • 它默认使用 _.identity (x => x) 作为映射器函数

这是另一个使用 .reduce() 的 vanilla JS 解决方案。

const fruit = {
  apple: [1, 2],
  orange: [3, 4],
  banana: [5, 6],
};

console.log(Object.values(fruit).reduce((t, c) => t.concat(...c), []));