ReactJS ES6数组过滤

时间:2019-04-21 12:02:22

标签: arrays reactjs ecmascript-6

我正在尝试将数据从对象分组到多维数组

在过去三天中,我尝试了多种方法来获得所需的结果。由于我没有运气,可能是由于我对ReactJS / ES6的了解不足。我希望有人能解释一下如何使它起作用。

我认为我必须使用map函数。在map函数中,一个过滤器函数获取唯一的公司,然后一个循环以添加表信息。

最终结果应如下:https://wireframe.cc/No5uB7

我要过滤的数据:

{
  "viewings": [
    {
      "companyXXX": "company-XXX",
      "time_start": "02/04/2019",
      "time_end": "03/04/2019 11:59"
    },
    {
      "companyXXX": "company-XXX",
      "time_start": "14/04/2019",
      "time_end": "15/04/2019 11:59"
    },
    {
      "companyYYY": "company-YYY",
      "rejection": 40,
      "time_start": "14/04/2019",
      "time_end": "15/04/2019 11:59"
    }
  ]
}

我仍然有无法使用的代码

    genData(data) {
      const di = data.viewings;

      let mps = [];

      di.map(m => mps.push(m.company));
      mps = Array.from(new Set(mps));

        console.log( mps );


       let mps = [];

       di.map((m) => 
         console.log( di.filter(mps => m.company) )
         );
    }

2 个答案:

答案 0 :(得分:0)

欢迎您使用StackOverflow。

地图功能将返回一个列表。根据您的情况,您可以轻松地使用 forEach 方法代替地图

像这样:

datas.forEach(data=>myArray.push(data.company))

有关map和forEach的更多信息,请参见以下链接:

JavaScript: Difference between .forEach() and .map()

https://codeburst.io/javascript-map-vs-foreach-f38111822c0f

答案 1 :(得分:0)

如果您的输入数据更加一致,可能会有所帮助,尤其是因为您正在尝试编写m.company,除非每次查看中都有一个company对象,否则这没有任何意义。

{
  "viewings": [
    {
      "company": "company-XXX",
      "time_start": "02/04/2019",
      "time_end": "03/04/2019 11:59"
    },
    {
      "company": "company-XXX",
      "time_start": "14/04/2019",
      "time_end": "15/04/2019 11:59"
    },
    {
      "company": "company-YYY",
      "time_start": "14/04/2019",
      "time_end": "15/04/2019 11:59"
    }
  ]
}

然后您可以编写:

var viewings = data.viewings.

var firstViewing = viewings[0];

var firstCompany = firstViewing.company;
var firstTimeStart = firstViewing.time_start;
// etc...

开始时,您的输入数据应更加结构化。

然后您可以注销每个公司名称:

var viewings = data.viewings;

viewings.forEach(v => {
    console.log(v.company);
});

您在问题中提到JSX,但是没有JSX代码。这似乎是您对JS而不是JSX的了解所致。