在JS / React中,如何将数组属性存储到新数组中以显示新的数组值?

时间:2018-08-29 15:48:32

标签: javascript arrays reactjs loops

我有3个不同的状态companiesprojectsreleases

this.state = {
  companies: [],
  projects: [],
  releases: []
}

获取并更新所有3种状态后,它们都包含数据:

componentWillMount() {
  getCompanys().then(companies => {
    const projectPromises = companies.map((company) => {
      getProjects(company).then(projects => {
        const releasePromises = projects.map((project) => {
          return getReleases(project).then(releases => {
            if(projects.length > 0 || releases > 0) {
              this.setState({
                companies: companies,
                projects: projects,
                releases: releases
              });
            }
          })
        })
      })
    });
  })
}

以下是其当前数据的示例输出: States output

现在,我的问题是是否要创建一个新数组并仅存储 company_name 公司描述 project_name 项目的说明版本名称版本的说明,我该怎么做?是否可以仅将这些信息存储到新数组中,然后仅循环新数组以显示这些信息,这样我就不必循环所有3个状态的数组?

这是我想要的输出内容:

newArray = [
    {
        company_name: 'IBM',
        company_description: 'Comp description',
        project_name: 'Project 101',
        project_description: 'Proj description',
        release_name: 'Release 101',
        release_description: 'Rel description'
    }
]

完整的输出数据:

enter code here

1 个答案:

答案 0 :(得分:1)

如果他们在所有公司中都有相同的信息,则可以查看公司的长度。例如,如果company[0]具有您的compnay_name和company_description,而projects[0]具有同一公司的project_name和project_description,则您可以执行以下操作。

var newArray = [];
for(var i = 0; i < company.length; i++){
   newArray.push(
      {
          company_name: this.state.companies[i].company_name,
          company_description: this.state.companies[i].company_description,
          project_name: this.state.projects[i].project_name,
          project_description: this.state.project[i].project_description,
          release_name: this.state.releases[i].release_name,
          release_description: this.state.releases[i].release_description
      }
   )
}

然后使用该数组执行任何操作。将其添加到状态中,以使用您在其他地方或那里拥有的东西。