在 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