Как создать новый массив, содержащий данные из другого массива, в react native?

Как создать новый массив из другого массива

мой массив data1

this.state = {
    data1: [
        {'x':'%20', 'y':11, 'z':'sunday'},
        {'x':'%30', 'y':21, 'z':'monday'},
        {'x':'%40', 'y':31, 'z':'tuesday'}          
    ],
    data2: [],
}

и я хочу создать data2, который выглядит так

data2: [
    {'x':'%20-(11)-sunday'},
    {'x':'%30-(21)-monday'},
    {'x':'%40-(31)-tuesday'}
]
0
0
413
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Взгляните на array.map.

const data2 = data1.map(value => ({ x: `${value.x}-(${value.y})-${value.z}` }))

Вы можете использовать функцию ниже для преобразования массива data1 в массив data2:

createCustomArray() {
   this.state.data1.forEach(function (item) {
      this.state.data2.push({'x': item.x+'-('+item.y+')-'+item.z});
   });
}

Это противоречит руководящим принципам. Вы изменяете состояние, при этом жизненный цикл компонента не запускается повторно.

parohy 10.09.2018 12:40

Поскольку @OzgrMan ссылается на массив data2 внутри состояния, важно добавить данные в массив data2 внутри состояния. Следовательно, рекомендуется создавать настраиваемый массив всякий раз, когда вы получаете data1, просто вызывая эту функцию.

Sandy..... 10.09.2018 12:46
Ответ принят как подходящий

  data1=  [
   {'x':'%20', 'y':11, 'z':'sunday'},
   {'x':'%30', 'y':21, 'z':'monday'},
   {'x':'%40', 'y':31, 'z':'tuesday'}          
  ]
    
  data2 = data1.map((item)=> ({x: Object.values(item).join('-')}))
  console.log("data2", data2)

Другие вопросы по теме