要避免每次使用循环时覆盖对象属性,可以采取以下几种方法:
Object.assign()
方法:Object.assign()
方法可以将源对象的属性复制到目标对象中,而不会覆盖目标对象已有的同名属性。可以在循环之前先创建一个空对象作为目标对象,然后使用Object.assign()
方法将源对象的属性复制到目标对象中。const source = { name: 'John', age: 25 };
const target = {};
Object.assign(target, source);
// 此时target对象包含了source对象的属性,不会覆盖已有的属性
const source = { name: 'John', age: 25 };
const target = {};
target = { ...target, ...source };
// 此时target对象包含了source对象的属性,不会覆盖已有的属性
for...in
循环遍历对象属性:for...in
循环可以遍历对象的所有可枚举属性,可以在循环中判断目标对象是否已有同名属性,如果没有则添加。const source = { name: 'John', age: 25 };
const target = {};
for (let key in source) {
if (!target.hasOwnProperty(key)) {
target[key] = source[key];
}
}
// 此时target对象包含了source对象的属性,不会覆盖已有的属性
以上是避免每次使用循环时覆盖对象属性的几种方法,根据具体的场景和需求选择适合的方法即可。
领取专属 10元无门槛券
手把手带您无忧上云