【问题标题】:Merge all arrays inside of an object合并对象内的所有数组
【发布时间】:2021-06-19 14:42:48
【问题描述】:
let fruit = {
    apple: [1, 2],
    orange: [3, 4],
    banana: [5, 6],
};

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

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

【问题讨论】:

  • Object.values(fruit).flat()?你想要的输出是什么?

标签: javascript typescript lodash


【解决方案1】:

这里不需要使用 lodash。您需要做的就是获取所有对象值的列表(使用Object.value()),然后将其展平(使用yourArray.flat()

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

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

【讨论】:

    【解决方案2】:

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

    _.flatMap(fruit)
    

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

    • flatMap(与 flatten 不同)与集合一起使用,并且无论如何都调用 Object.values() 来获取对象
    • 默认将 _.identity (x => x) 作为映射函数

    【讨论】:

      【解决方案3】:

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

      const fruit = {
        apple: [1, 2],
        orange: [3, 4],
        banana: [5, 6],
      };
      
      console.log(Object.values(fruit).reduce((t, c) => t.concat(...c), []));

      【讨论】:

        猜你喜欢
        • 2020-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-14
        • 2017-02-06
        • 1970-01-01
        • 2023-02-02
        • 1970-01-01
        相关资源
        最近更新 更多