#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; }