开发者问题收集

在 React Native 中使用 JavaScript 过滤数组中的对象

2018-09-29
10978

我被某件事难住了,我觉得这很愚蠢,但在尝试了一些东西之后,我找不到解决方案。有什么建议吗?

我有一个包含以下格式对象的数组:

   [
    Object {
      "name": "name",
     "description": "100 jours ferme",
     "image: "path_image",
     "culture": Array [
      Object {
        "name": "name",
        "value": "309",
      }
    ]}
    ...
    ]

使用我的 react native 项目中的函数,我得到了一个 selected value ,例如: 309

所以我想做的是创建一个 New Array ,其中只有包含此值的项目在 culture 内的对象中,并修改我的数组的状态(使用 setState)

我知道我可以使用 .map() 映射所有 culture 数组,但之后我就卡住了。 我只想说“我想要一个包含这些元素的新数组”...

然后,我知道如果我有类似的东西:

"culture": 309

我可以这样做: myArray.filter(i => i.culture == selectedValue)

关于如何使用 .filter(), .map() 做到这一点,有什么帮助吗?

谢谢

2个回答

您可以对数组执行 Array.prototype.filter ,然后针对每个 culture 运行 Array.prototype.find ,并使用

o => o.value === selectedValue
谓词。

这是一个运行示例:

const arr = [
  {
    name: "name",
    description: "100 jours ferme",
    image: "path_image",
    culture: [{
      name: "name",
      value: "309"
    }]
  },
  {
    name: "name",
    description: "100 jours ferme",
    image: "path_image",
    culture: [{
      name: "name",
      value: "308"
    }]
	}
];

const selectedValue = '309';
const newArr = arr.filter(obj => obj.culture.find(o => o.value === selectedValue));
console.log(newArr)
.as-console-wrapper { max-height: 100% !important; }
Sagiv b.g
2018-09-29

要使用特定键过滤数组,

var filterArray = detailArray.filter(
      data => data.service === serviceIdentifier,
    );
parth
2019-09-11