我有这样的对象:
{
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},
}
*/