繁体   English   中英

ReactJS ES6阵列过滤

[英]ReactJS ES6 array filtering

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

在过去的三天里,我尝试了多种方法来获得我想要的结果。 因为我没有运气,可能是因为我对ReactJS / ES6知之甚少。 我希望有人可以解释我是如何让这个工作的。

我想我将不得不使用地图功能。 在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) )
         );
    }

欢迎来到StackOverflow。

map函数将返回一个列表。 在您的情况下,您可以轻松使用forEach方法而不是地图

......这些:

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

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

JavaScript:.forEach()和.map()之间的区别

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

如果您的输入数据更加一致,我可能会提供帮助,特别是因为您正在尝试编写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的了解的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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