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

时间:2018-09-29 17:05:58

标签: javascript arrays reactjs object filter

我坚持认为自己只是愚蠢的东西,但是尝试了一些东西之后,我找不到解决方案。有什么建议吗?

我有一个数组,其中对象的格式如下:

   [
    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)

我知道我可以用culture映射所有.map()数组,但是我陷入了困境。 我只想说“我想要一个包含这些元素的新数组” ...

然后,我知道我是否有这样的东西:

"culture": 309

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

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

谢谢

2 个答案:

答案 0 :(得分:3)

您可以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; }

答案 1 :(得分:0)

要使用特定键过滤数组,

[checkbox checkbox-red value "Red,"]