Выравнивание или создание объекта JSON с помощью javascript

#javascript #json

#javascript #json

Вопрос:

Объект:

 {
    firstName: "Doe",
    address: "California",
    mobile: "xxxx"
}
  

Список объектов или массив:

 [
  { name: "course1", value: "1" } ,
  { name: "course2", value: "2" } ,
  { name: "course3", value: "3" }
]
  

Ожидаемый результат или объект из:

 {
  firstName: "Doe",
  address: "California",
  mobile: "xxxx",
  course1: "1",
  course2: "2",
  course3: "3"
}
  

Я хочу достичь вышеуказанного объекта с помощью javascript.

Спасибо!

Комментарии:

1. Пожалуйста, покажите нам вашу попытку, иначе мы не сможем помочь вам улучшить ваш код.

Ответ №1:

Вы можете попробовать использовать map() и Object.assign() нравится следующий способ:

 var obj = { firstName : "Doe", address : "California", mobile : "xxxx" };
var arr = [{name : "course1",value : "1"} , {name : "course2",value : "2"} , {name : "course3",value : "3"}];

arr = arr.map(v => ({[v.name]: v.value}));
var newObj = Object.assign(obj, Object.assign({}, ...arr));
console.log(newObj);  

Ответ №2:

Вы можете получить ожидаемый результат, используя Array.reduce и Computed property names .

 let data = { firstName : "Doe", address : "California", mobile : "xxxx" };
let courses = [{name : "course1",value : "1"} , {name : "course2",value : "2"} , {name : "course3",value : "3"}];

const finalRes = courses.reduce((res, obj) => {
  return {
    ...res,
    [obj.name]: obj.value
  };
}, {...data});

console.log(finalRes)  

Ответ №3:

Вы можете сопоставить значения каждого объекта с записями, а затем превратить их в объект с помощью Object.fromEntries . После того, как у вас будет этот новый объект, примените его к оригиналу.

 const sourceObject = {
  firstName: "Doe",
  address: "California",
  mobile: "xxxx"
};

const propArray = [
  { name: "course1", value: "1" } ,
  { name: "course2", value: "2" } ,
  { name: "course3", value: "3" }
];

const resultObject = {
  ...sourceObject,
  ...Object.fromEntries(propArray.map(p => Object.values(p)))
};

console.log(resultObject);  
 .as-console-wrapper { top: 0; max-height: 100% !important; }