Javascript 如何在对象数组中循环并生成键值对?
我有这样一个对象数组:Javascript 如何在对象数组中循环并生成键值对?,javascript,arrays,object,Javascript,Arrays,Object,我有这样一个对象数组: let someObj = { items: [{ id: '12', value: true }, { id: '34', value: true }, { id: '56', value: false }] } let obj = { someKey: someValue, '12': true, '34': tr
let someObj = {
items: [{
id: '12',
value: true
}, {
id: '34',
value: true
}, {
id: '56',
value: false
}]
}
let obj = {
someKey: someValue,
'12': true,
'34': true,
'56': false,
}
我想将其添加到一个现有对象,其中id是该对象的键,如下所示:
let someObj = {
items: [{
id: '12',
value: true
}, {
id: '34',
value: true
}, {
id: '56',
value: false
}]
}
let obj = {
someKey: someValue,
'12': true,
'34': true,
'56': false,
}
您可以使用
Array#reduce
实现您的目标,如下所示:
const输入={
项目:[{
id:'12',
值:true
}, {
id:'34',
值:true
}, {
id:'56',
值:false
}]
}
const output=input.items.reduce((o{
身份证件
价值
})=>(o[id]=值,o),{})
log(输出)
您可以从items中迭代每个项并创建一个新对象,如下所示
让someObj={
项目:[{
id:'12',
值:true
}, {
id:'34',
值:true
}, {
id:'56',
值:false
}]
}
const newObj={};
someObj.items.map(item=>{
newObj[item.id]=item.value;
});
console.log(newObj)代码>首先,您可以将ITEN转换为“KV”条目
>someObj.items.map({id,value})=>[id,value])
[['12',真],'34',真],'56',假]]
然后把它变成物体
>Object.fromEntries(someObj.items.map({id,value})=>[id,value]))
{'12':对,'34':对,'56':错}
你可以做一个函数
>让ObjectFromMapping=(vs,mapping)=>Object.fromEntries(vs.map(mapping))
>ObjectFromMapping(someObj.items,({id,value})=>[id,value])
{'12':对,'34':对,'56':错}
也许把vs
变成一个iterable是个好主意
>让ObjectFromMapping=(vs,mapping)=>Object.fromEntries([…vs].mapping))
>ObjectFromMapping(“abc”,(字符,idx)=>[idx,字符])
{0':'a','1':'b','2':'c'}
然后,您的函数将在任何iterable
使用map
和对象上工作。值将简化
const output=arr=>Object.fromEntries(arr.map(Object.values));
让someObj={
项目:[
{
id:“12”,
价值观:正确,
},
{
id:“34”,
价值观:正确,
},
{
id:“56”,
值:false,
},
],
};
日志(输出(someObj.items))代码>您有哪些具体问题?你知道如何迭代数组吗?您知道如何访问对象的属性吗?你知道如何将属性添加到对象中吗?可能是重复的嘿,回答不错。它在概念上类似于我的第三次拍摄(功能性拍摄),但你的拍摄是最简单的。完美,除非项目有两个以上的属性。在这种情况下,我的固定映射仍然有效。无论如何,你的答案应该是OP选择的答案。谢谢@MatíasFidemraizer,同意你的观点。我喜欢你详细的概念和答案。