[英].Map Array inside Array
我正在尝试过滤数据,但是我在数组中有一个数组,而且我不知道如何获取这些数据! 也有一个名为“ toString”的属性,那可能是个问题(函数)
const filterteste = this.state.example.changelog.histories.map(item => (
{
id: item.id,
created: item.created,
field: item.items.field,
fromStringprop: item.items.fromString,
toStringprop: item.items.toString,
}
));
期望的输出:我正在尝试过滤数组,所以我有一个干净的数组,它具有我需要的属性
{
created:
id:
field:
fromString:
toString:
}
const filterteste = this.state.example.changelog.histories.map(item => {
//instead of returning a single item, we return an array!
return item.items.map(childItem => {
return {
id: item.id,
created: item.created,
field: childItem.field,
fromStringprop: childItem.fromString,
toStringprop: childItem.toString,
};
});
});
使用此代码,您将映射基本数组元素,并且将每个这些元素作为子元素的映射返回-这有意义吗?
在此之后,您将仍然拥有一个数组,如下所示:
[
[
//item1,
//item2
],
[
//item3
]
]
在这一点上,我们可以在这个数组上调用reduce
来达到我们的预期结果。
let resultOfArrayMap = theMapFunctionFromTopOfThePost(baseArray);
const properlyMappedArray = resultOfArrayMap.reduce((arrayBeingBuilt, currValue) => {
return arrayBeingBuilt.concat(...currValue);
}, []);
这是从一个空数组开始的,对于我们映射数组中的每个项目,它会合并一个新数组中的所有子项,然后继续到下一个项目,并通过处理上一个元素将其他项目污染到返回的数组中。
现在看起来应该像这样:
[
//item1,
//item2,
//item3
]
您可以将它们过滤为
const filterteste = this.state.example.changelog.histories.map(item => (
{
id: item.id,
created: item.created,
field: item.items.field,
fromStringprop: item.items.filter((item)=> return item.fromString != null),
toStringprop: item.items.filter((item)=> return item.toString != null)
}
));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.