【问题标题】:How to get all the values from multiple keys of an array of object?如何从对象数组的多个键中获取所有值?
【发布时间】:2018-11-03 18:09:30
【问题描述】:

我需要从对象数组的多个键中获取值。

trip = [
    {sp: 'cbe', ep: 'tpr'}, 
    {sp: 'tpr', ep: 'erd'}, 
    {sp: 'erd', ep: 'blr'}
];

输出应该是["cbe", "tpr", "erd", "blr"]

我尝试过的内容已作为答案发布,它有效,但我使用了两张地图来获得所需的输出。我知道应该有比我的答案更好的方法。

这是我在 stackblitz 上的code

【问题讨论】:

    标签: javascript ecmascript-6 ecmascript-5


    【解决方案1】:

    这里可以使用新的flatMap 功能,但请注意浏览器支持有限

    trip = [
        {sp: 'cbe', ep: 'tpr'}, 
        {sp: 'tpr', ep: 'erd'}, 
        {sp: 'erd', ep: 'blr'}
    ];
    
    res = [ ...new Set(   trip.flatMap(Object.values)    )]
    
    console.log(res)

    【讨论】:

    • 你能告诉我平面图是做什么的吗?
    • @anonymous 只需点击答案中的链接!
    【解决方案2】:

    这是另一种方式:(更新为聚合所有键而不是显式键)

    const trip = [
        {sp: 'cbe', ep: 'tpr'}, 
        {sp: 'tpr', ep: 'erd'}, 
        {sp: 'erd', ep: 'blr'}
    ];
    
    const t = Array.from(trip.reduce((a, el) => {
        for (let key in el) a.add(el[key]);
        return a;
    }, new Set()));
    
    console.log(t);

    【讨论】:

    • 我认为您不需要明确地为 Set 构造函数提供一个空数组。此外,这里的最终结果将是 Set 而不是数组。您可以使用 Array.from(trip.reduce...) 解决此问题。
    【解决方案3】:

        const trip = [
            {sp: 'cbe', ep: 'tpr'}, 
            {sp: 'tpr', ep: 'erd'}, 
            {sp: 'erd', ep: 'blr'}
        ];
        const r = trip.map( m => {
          return m.sp
        });
        const s = trip.map( m => {
          return m.ep
        });
        console.log(Array.from(new Set(r.concat(s))));

    【讨论】:

      【解决方案4】:

      如果你没事的话。用不那么可读的单行...

      trip = [{
          sp: 'cbe',
          ep: 'tpr'
        },
        {
          sp: 'tpr',
          ep: 'erd'
        },
        {
          sp: 'erd',
          ep: 'blr'
        }
      ];
      
      const res = [...new Set([].concat.apply([], trip.map(item => Object.values(item))))];
      
      console.log(res);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-17
        • 2022-08-03
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 2020-12-14
        相关资源
        最近更新 更多