我被一些我认为很愚蠢的东西卡住了,但在尝试了一些东西之后,我找不到解决方案。有什么建议吗?
我有一个包含以下格式对象的数组:
[
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()
做到这一点的帮助吗?
谢谢
发布于 2018-09-30 01:24:26
您可以在数组上运行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; }
发布于 2019-09-11 21:34:49
要过滤具有特定键的数组,
var filterArray = detailArray.filter(
data => data.service === serviceIdentifier,
);
https://stackoverflow.com/questions/52570634
复制相似问题