有没有一种有效的方法可以根据键值对从对象数组中获取对象的值

问题描述 投票:0回答:2

我是 JavaScript 的新手,我被卡住了。 我在下面有一组对象

const   items = [
{
  "product": "apple",
  "quantity": 3
},
{
  "product": "orange",
  "quantity": 1
},
{
  "product": "mango",
  "quantity": 0.6
},
{
  "product": "pineapple",
  "quantity": 52
},
{
  "product": "banana",
  "quantity": 23
},
{
  "product": "avocado",
  "quantity": 14
}

]

我正在尝试将这些显示在桌子上,并希望根据产品获取每一行的数量,因此,例如,如果它是香蕉的一行,我得到 23.

到目前为止我尝试的是

 function specs(gizmo){
   var found = items.filter(obj => obj.product === gizmo);
   return found[0]?.quantity
 }

  console.log(specs('banana')); 

如果我对数组进行硬编码,但当我从我的后端 Firestore 中提取它时,这会起作用。我得到错误:

Cannot read properties of undefined (reading '0')

我已经尝试添加后备,但仍然无法正常工作。

javascript reactjs firebase google-cloud-firestore
2个回答
0
投票

对于您的用例,您应该使用

array.find
。请注意,您仍然需要使用可选链接,因为返回值可能未定义。


0
投票

正如其他人已经提到的,请改用

find()

您还可以创建一个自定义函数,循环遍历数组并搜索项目。我在下面做了一个例子。

function specs(itemToFind) {
  for(const item of items) {
    if(item.product === itemToFind) {
      return item;
    }
  }
  
  return null; // return something if item was not found.
}

console.log(specs("banana"));
© www.soinside.com 2019 - 2024. All rights reserved.