繁体   English   中英

数组内的.Map数组

[英].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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM