Как изменить массив значений объектов на объект массива значений объектов в react

#arrays #reactjs #object #next.js #arrayobject

Вопрос:

у меня есть массив значений объектов, подобный этому:

 {
    user: ["data1", "data2"],
    user2: ["data1", "data2"],
}
 

и я хочу изменить массив значений объектов на объект массива значений объектов, как это:

 {
    user: [{value: "data1", name: "data1", isChecked: false}, {value: "data2",  name: "data2", isChecked: false}],
    user2: [{value: "data1", name: "data1", isChecked: false}, {value: "data2",  name: "data2", isChecked: false}]
}
 

Ответ №1:

Вы можете выполнить итерацию по объекту, используя Object.entries, которые дадут вам массив с [ключом, значением] каждого свойства объекта, а затем просто создайте функцию reduce для создания нового объекта, который возвращает измененный массив с помощью функции карты:

 const obj = {
    user: ["data1", "data2"],
    user2: ["data1", "data2"],
}
const result = Object.entries(obj).reduce((acc, curr) => {
 const [key, value] = curr

 return {
  ...acc,
  [key]: value.map(item => ({ value: item, name: item, isChecked: false}))
 }

}, {})

console.log(result)