#javascript #json #object #ecmascript-6
#javascript #json #объект #ecmascript-6
Вопрос:
У меня есть некоторые данные, которые выглядят следующим образом:
{
45: [
{
minPrice: 59,
avgPrice: 123,
maxPrice: 279
}
],
34: [
{
minPrice: 99,
avgPrice: 160,
maxPrice: 320,
}
]
}
}
Каков наилучший способ получить наименьшее minPrice
значение из всех объектов с ключами, такими как 45 и 34. Это объект с несколькими ключами, и каждый ключ будет содержать массив объектов, и каждый объект в этом массиве будет иметь minPrice
ключ.
Я попытался преобразовать его в массив с помощью Object.keys()
, но это дает несколько вложенных массивов (что и ожидалось). Это могло бы быть решением, но есть ли лучший, более эффективный способ получить minPrice
? В приведенном выше примере результат должен быть 59.
Ответ №1:
Вы на правильном пути. Но вы должны использовать Objects.value()
вместо Objects.key()
, так как вы хотите сравнить значения вместо ключа!
Вот как вы можете получить минимальное значение ключа из объекта объектов.
После извлечения значений объекта, вы должны можете использовать array.map()
для создания массива minPrice
, с последующим использованием Math.Min
синтаксиса распространения и ES6, чтобы вернуть самую низкую цену.
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)