【问题标题】:JS map array of objects by specific propertyJS按特定属性映射对象数组
【发布时间】:2021-01-22 18:30:07
【问题描述】:

我有一个对象数组。每个对象中都有一个名为rate 的属性(它是一个数组)。我想将这些映射到一个新数组以查找所有可用费率的长度。 JS map() 函数在这里合适吗?

const arraySample = [
  { rate: [ { price: 123 }, { price: 456 } ] },
  { rate: [ { price: 789 }, { price: 987 } ] },
  { rate: [ { price: 654 }, { price: 321 } ] }
]

期望的输出

[ { price: 123 }, { price: 456 }, { price: 789 }, { price: 987 }, { price: 654 }, { price: 321 } ] 

返回长度 = 6

【问题讨论】:

    标签: javascript arrays json object ecmascript-6


    【解决方案1】:

    .flatMap 会是更好的选择:

    const arraySample = [
      { rate: [ { price: 123 }, { price: 456 } ] },
      { rate: [ { price: 789 }, { price: 987 } ] },
      { rate: [ { price: 654 }, { price: 321 } ] }
    ];
    
    const output = arraySample.flatMap(obj => obj.rate);
    
    console.log(output);

    【讨论】:

      【解决方案2】:

      如果你想要的只是长度,并且不打算使用数组,你甚至不需要在这里映射。
      一个简单的循环就足够了:

      const arraySample = [
        { rate: [ { price: 123 }, { price: 456 } ] },
        { rate: [ { price: 789 }, { price: 987 } ] },
        { rate: [ { price: 654 }, { price: 321 } ] }
      ];
      
      let totalRates = 0;
      
      for (arr of arraySample)
        totalRates += arr.rate.length;
      
      console.log('Total rates:', totalRates);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多