首页 > 解决方案 > 在对象数组中,如何在 React 中按属性返回所有对象?

问题描述

我想要做的是创建一个多复选框过滤器。因此,当我单击标题为“附件”的复选框时,它会返回属性“类型”下包含值“附件”的所有项目。但在我这样做之前,我需要了解如何正确操作和遍历我的数据。

我有一个名为products的 json 文件,其中包含商店的所有产品,看起来像这样。

[
  {
  "id" : 1,
  "name" : "Net and Post Set",
  "type" : "Accessories",
  "price" : 35,
  "desc" : "It's a solid blade. 11111"
},{
  "id" : 10,
  "name" : "Platinum 3* Balls (Bag of 36)",
  "type" : "Balls",
  "price" : 12,
  "desc" : "It's a solid blade. 11111"
},{
  "id" : 22,
  "name" : "Galaxy MC2",
  "type" : "Blades",
  "category" : "Composite",
  "price" : 60,
  "desc" : "It's a solid blade. 11111"
},
{
  "id" : 23,
  "name" : "Oversized Carbon fl, st",
  "type" : "Blades",
  "category" : "Composite",
  "price" : 32,
  "desc" : "It's a solid blade. 11111"
}
]

但是当我在控制台中打印出来时,它是一团糟。首先,它作为数组中的数组打印。其次,该嵌套数组具有键“0”,其余值也具有键。

让我们假设我将products.json传递给一个函数。为了将没有前导零的数组打印到控制台,我必须调用console.log(props.products[0]).

但我的问题是如何"type"引用props.products[0]. props.products[0].type返回未定义。这意味着我必须逐步检查每个项目?

标签: javascriptreactjs

解决方案


您可以使用Array#map解构。

const props = {
  products: [
    [{ "id": 1, "name": "Net and Post Set", "type": "Accessories", "price": 35, "desc": "It's a solid blade. 11111" }, { "id": 10, "name": "Platinum 3* Balls (Bag of 36)", "type": "Balls", "price": 12, "desc": "It's a solid blade. 11111" }, { "id": 22, "name": "Galaxy MC2", "type": "Blades", "category": "Composite", "price": 60, "desc": "It's a solid blade. 11111" }, { "id": 23, "name": "Oversized Carbon fl, st", "type": "Blades", "category": "Composite", "price": 32, "desc": "It's a solid blade. 11111" } ]
  ]
};
const types = props.products[0].map(({type})=>type);
console.log(types);


推荐阅读