#javascript #arrays
#javascript #массивы
Вопрос:
Мне нужно написать функцию priceLookup(items, ItemName), а затем вернуть цену за вызываемый элемент. Если нет элементов, которые соответствуют переданному имени, функция должна вернуть undefined, и если в массиве есть более одного элемента, который соответствует имени, функция должна вернуть цену первого, который соответствует.
Пример вывода:
priceLookup(items, "Effective Programming Habits") //=> 13.99
Заданный массив:
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
}
]
Что у меня есть до сих пор:
function priceLookup(items, itemName) {
if (items.length === 0) return undefined;
for (let i = 0; i < items.length; i ) {
let result = items.filter(price => items.price);
return resu<
}
}
Я думал, что смогу использовать метод filter() для возврата цены при вызове каждого имени, однако это возвращает пустой массив. (Я уверен, что я сделал это неправильно)
Ответ №1:
Поскольку вы хотите найти первое совпадение, если оно существует, вы должны использовать .find
, not .filter
— и вам не нужен for
цикл в дополнение к методу array . Вы также должны возвращать цену найденного объекта, а не всего объекта.
function priceLookup(items, itemName) {
const found = items.find(item => item.itemName === itemName);
if (found) return found.price;
}
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
}
]
function priceLookup(items, itemName) {
const found = items.find(item => item.itemName === itemName);
if (found) return found.price;
}
console.log(priceLookup(items, "Effective Programming Habits"));