#javascript #object #reduce
#javascript #объект #уменьшить
Вопрос:
У меня есть объект, который выглядит следующим образом:
const yo = {
one: {
value: 0,
mission: 17},
two: {
value: 18,
mission: 3},
three: {
value: -2,
mission: 4},
}
Я хочу найти минимальное значение mission
prop внутри вложенных объектов. Эта строка предназначена для поиска минимального значения вложенного value
prop и возвращает -2
:
const total = Object.values(yo).reduce((t, {value}) => Math.min(t, value), 0)
Но когда я пытаюсь сделать то же самое для mission
prop, он возвращается 0
, когда он должен быть 3
:
const total = Object.values(yo).reduce((t, {mission}) => Math.min(t, mission), 0)
Есть ли что-то, что я упускаю или делаю неправильно?
Ответ №1:
В данном случае map
этого достаточно.
const yo = {
one: {
value: 9,
mission: 17
},
two: {
value: 18,
mission: 6
},
three: {
value: 3,
mission: 4
},
}
const total = Object.values(yo).map(({ mission }) => mission);
console.log(Math.min(...total));
Комментарии:
1. @Tigran: Довольно мило 🙂
Ответ №2:
Вы передаете 0
как начальное значение аккумулятора, т. t
е. 0
меньше, чем все mission
значения. Таким образом, вам нужно передать наибольшее значение, т.е. Infinity
в качестве второго аргумента reduce()
.
const yo = {
one: {
value: 0,
mission: 17},
two: {
value: 18,
mission: 3},
three: {
value: -2,
mission: 4},
}
const total = Object.values(yo).reduce((t, {mission}) => Math.min(t, mission), Infinity);
console.log(total)
Комментарии:
1. @KontrolEgo Подумайте о том, чтобы принять ответ, если он вас устраивает