如何从对象的对象中获取键的最小值

时间:2019-03-27 02:01:52

标签: javascript json object ecmascript-6

我有一些看起来像这样的数据:

{
45: [
    {
    minPrice: 59,
    avgPrice: 123,
    maxPrice: 279
    }
],
34: [
    {
    minPrice: 99,
    avgPrice: 160,
    maxPrice: 320,
   }
]
}
}

获得带有键(例如45和34)的所有对象的最低minPrice值的最佳方法是什么。它是一个具有多个键的对象,每个键将具有一个对象数组,并且该数组中的每个对象将具有一个对象数组。 minPrice键。

我尝试使用Object.keys()将其转换为数组,但这提供了多个嵌套数组(这是预期的)。那可能是一个解决方案,但是有没有更好的效率来获得minPrice?在上面的示例中,结果应为59。

1 个答案:

答案 0 :(得分:1)

您的方向正确。但是您应该使用Objects.value()而不是Objects.key(),因为您要比较值而不是键!

这是从对象对象中获取键的最小值的方法。

提取对象的值之后,应该可以使用array.map()创建一个minPrice数组,然后使用Math.Min和ES6的spread syntax返回最低价格。

const obj = {
  45: [
      {
      minPrice: 59,
      avgPrice: 123,
      maxPrice: 279
      }
  ],
  34: [
      {
      minPrice: 99,
      avgPrice: 160,
      maxPrice: 320,
    }
  ]
}
const processedValues = Object.values(obj);
//console.log(values)
const minimumValue = Math.min(...processedValues.map(obj => obj[0]['minPrice']));
console.log(minimumValue)