Я пытаюсь понять, как мне вернуть самую дорогую цену в этом наборе товаров.

let items = [
    {
      itemName: "Effective Programming Habits",
      type: "book",
      price: 13.99
    },
    {
      itemName: "Creation 3005",
      type: "computer",
      price: 299.99
    },
    {
      itemName: "Finding Your Center",
      type: "book",
      price: 15.00
    }
  ]

Я знаю, что метод .reduce () специфичен для массивов. Но я не уверен, что еще я мог бы использовать, чтобы определить самую дорогую цену.

Я также пробовал использовать Math.max (), но я не совсем уверен, как я буду использовать его в этом случае

-2
JackXN 16 Янв 2021 в 21:15

7 ответов

Лучший ответ

Ты можешь использовать

Math.max(...items.map(item => item.price));

Чтобы получить самую высокую цену.

1
Thomas Sablik 16 Янв 2021 в 18:23

Попробуйте ниже фрагмент

let index,highest = 0;

for ( let item in items ) {
    if(items[item].price > highest ) {
    index  = item;
    highest = items[item].price;
 }
} 
// highest price item
console.log(items[index].price)
0
Afsar 16 Янв 2021 в 18:21

Я нашел что-то под названием Math.max()

Может быть, это поможет ?!

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max

0
Mike de Bie 16 Янв 2021 в 18:21

Функция reduce используется для агрегирования значения массива.

Возможно, вам будет лучше использовать простой цикл, чтобы найти предмет с самой высокой ценой:

let items = [
    {
        itemName: "Effective Programming Habits",
        type: "book",
        price: 13.99
    },
    {
        itemName: "Creation 3005",
        type: "computer",
        price: 299.99
    },
    {
        itemName: "Finding Your Center",
        type: "book",
        price: 15.00
    }
];

let item = null;
let maxPrice = 0;
for (let i = 0; i < items.length; i++) {
    if (items[i].price > maxPrice) {
        item = items[i];
        maxPrice = item.price;
    }
}

// Now item variable contains an item with the biggest price
0
Nina Lisitsinskaya 16 Янв 2021 в 18:24

Используйте map и Math.max

let items = [
    {
      itemName: "Effective Programming Habits",
      type: "book",
      price: 13.99
    },
    {
      itemName: "Creation 3005",
      type: "computer",
      price: 299.99
    },
    {
      itemName: "Finding Your Center",
      type: "book",
      price: 15.00
    }
  ]
  
  
const exp = Math.max(...items.map(({ price }) => price));

console.log(exp)
0
sivako 16 Янв 2021 в 18:24

Прокрутите и проверьте, больше ли ваше текущее значение, чем max, когда да, назначьте вашему max цену текущего элемента

let items = [{
    itemName: "Effective Programming Habits",
    type: "book",
    price: 13.99
  },
  {
    itemName: "Creation 3005",
    type: "computer",
    price: 299.99
  },
  {
    itemName: "Finding Your Center",
    type: "book",
    price: 15.00
  }
]


let max = 0;

items.forEach((x) => {
  if (x.price > max) {
    max = x.price;
  }
})

console.log(max);

Или как однострочник

 let items = [{
        itemName: "Effective Programming Habits",
        type: "book",
        price: 13.99
      },
      {
        itemName: "Creation 3005",
        type: "computer",
        price: 299.99
      },
      {
        itemName: "Finding Your Center",
        type: "book",
        price: 15.00
      }
    ]


console.log(Math.max(...items.map((x)=>{return x.price})));
0
Alex 16 Янв 2021 в 18:26

Использование .reduce :

const items = [
    {
      itemName: "Effective Programming Habits",
      type: "book",
      price: 13.99
    },
    {
      itemName: "Creation 3005",
      type: "computer",
      price: 299.99
    },
    {
      itemName: "Finding Your Center",
      type: "book",
      price: 15.00
    }
];

const mostExpensiveItem = items.reduce((acc,item) => {
  const maxPrice = acc.price || Number.MIN_VALUE;
  if(item.price > maxPrice) acc = item;
  return acc;
}, {});

console.log(mostExpensiveItem);
console.log(mostExpensiveItem.price);

Использование for-loop:

const items = [
    {
      itemName: "Effective Programming Habits",
      type: "book",
      price: 13.99
    },
    {
      itemName: "Creation 3005",
      type: "computer",
      price: 299.99
    },
    {
      itemName: "Finding Your Center",
      type: "book",
      price: 15.00
    }
];

let mostExpensiveItem = {};

for(let i = 0; i < items.length; i++) {
  const item = items[i];
  const maxPrice = mostExpensiveItem.price || Number.MIN_VALUE;
  if(item.price > maxPrice) mostExpensiveItem = item;
}

console.log(mostExpensiveItem);
console.log(mostExpensiveItem.price);

Примечание. Если вы ищете только price, вы можете отслеживать это свойство как число, а не весь объект.

0
Majed Badawi 16 Янв 2021 в 18:34
65753027