[英]JSON object flattening or creation with javascript
目的:
{
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 实现上述对象。
谢谢 !
您可以尝试使用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);
您可以使用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)
您可以将每个对象的值映射到条目,然后使用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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.