逐个更新Javascript嵌套对象



我有这样的对象:

{
a:{name:'a'},
b:{name:'b'},
c:{name:'c'},
}

我的目标是为每个对象添加新的键/值对。所以最终结果应该是这样的:

{
a:{name:'a',newField:false},
b:{name:'b',newField:false},
c:{name:'c',newField:false},
}

到目前为止,我已经尝试将我的当前对象放入数组并循环,但我根本没有成功,因为我只得到了第一级的键/值对。

有什么建议吗?

实现这一点的最简单方法是使用for...in循环。

const data = {
a: { name: 'a' },
b: { name: 'b' },
c: { name: 'c' },
};
for (let key in data) {
data[key].newField = false;
}
console.log(data);
.as-console-wrapper { top: 0; max-height: 100% !important; }

如果你不想改变数据,你可以尝试以下方法:

const data = {
a: { name: 'a' },
b: { name: 'b' },
c: { name: 'c' },
};
const copy = Object.fromEntries(Object.entries(data).map(([key, val]) =>
[key, { ...val, newField : false }]));
console.log(copy);
.as-console-wrapper { top: 0; max-height: 100% !important; }

如果您喜欢更改对象而不是创建新对象,请使用for...in循环。

const obj = {
a: {name:'a'},
b: {name:'b'},
c: {name:'c'},
};
for (let key in obj) {
obj[key].newField = false;
}
console.log(obj);

a for。。在应该做的

for (const key in yourObject) {
yourObject[key].newField = false
}

试试这个:

const orig_obj = {
a:{name:'a'},
b:{name:'b'},
c:{name:'c'},
};
Object.keys(orig_obj).forEach((key) =>{
orig_obj[key].newField = false;
});
console.log(orig_obj);
// Output:
/*
{
a:{name:'a',newField:false},
b:{name:'b',newField:false},
c:{name:'c',newField:false},
}
*/

最新更新