我需要编写一个函数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 result;
}
}
我想我可以使用filter()方法返回价格,因为每个名称都被调用了,但是,这返回了一个空数组。 (我确定我做错了)
答案 0 :(得分:4)
由于要查找第一个匹配项(如果存在),因此应使用.find
,而不要使用.filter
-并且除了数组之外,您不需要for
循环方法。您还应该返回找到的对象的价格,而不是整个对象的价格。
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"));