Нахождение минимального значения свойства вложенного объекта

#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 Подумайте о том, чтобы принять ответ, если он вас устраивает