В JS / React, как сохранить свойства массива в новом массиве для отображения новых значений массива? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть 3 разных состояния companies, projects и releases.

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

После выполнения выборки и обновления всех трех состояний все они содержат данные:

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

Теперь мой вопрос: хочу ли я создать новый массив и сохранить только название компании , описание компании , имя_проекта , описание проекта , release_name и description release , как мне это сделать? Можно ли сохранить только эту информацию в новом массиве, а затем только зациклить новый массив, чтобы отобразить эту информацию, чтобы мне не пришлось зацикливать массив всех 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 голосов
/ 29 августа 2018

Вы можете просмотреть всю длину компании, если они имеют одинаковую информацию во всех из них. Например, если 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
      }
   )
}

Тогда делай что хочешь с этим массивом. Добавьте его в состояние, чтобы использовать еще где или что вы.

...