首页 > 解决方案 > 给定数组,创建一个函数并返回一个数字

问题描述

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

标签: javascriptarrays

解决方案


既然你想找到第一个匹配,如果它存在,你应该使用.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"));


推荐阅读