给定数组,创建一个函数并返回一个数字

时间:2020-10-07 01:27:30

标签: javascript arrays

我需要编写一个函数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()方法返回价格,因为每个名称都被调用了,但是,这返回了一个空数组。 (我确定我做错了)

1 个答案:

答案 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"));