您将如何检查一个对象中的 属性 个名称是否存在于另一个对象中?
How would you check if property name(s) from one object exist in another?
我正在尝试 transfer/copy 从 object1 到 object2 的属性,但只有 object2 中未定义的属性。
在此先感谢,我希望这能清楚地表达出来!
let object1 = { a: 1, b: 2, c: 3, d: 4 }
let object2 = { a: 'string' }
fillObj = function (object2, object1) {
for (let key in object1) {
if (typeof object2.key === undefined) {
object2[key] = object1[key];
}
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
(1) 通过变量 属性 名称查看对象的属性,使用括号表示法,而不是点表示法
(2) 要检查某些内容是否未定义,可以直接与未定义进行比较,或者使用 typeof
并与 string 'undefined'
进行比较(但是此算法不需要此检查)
(3) 确保属性是自己的属性,而不是继承的属性,hasOwnProperty
let object1 = { a: 'string' }
let object2 = { a: 1, b: 2, c: 3, d: 4 }
fillObj = function (object2, object1) {
for (let key in object1) {
if (object1.hasOwnProperty(key)) {
object2[key] = object1[key];
}
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
console.log(fillObj(object2, object1));
或使用 Object.entries
,它仅迭代自有属性:
let object1 = { a: 'string' }
let object2 = { a: 1, b: 2, c: 3, d: 4 }
fillObj = function (object2, object1) {
for (const [key, val] of Object.entries(object1)) {
object2[key] = val;
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
console.log(fillObj(object2, object1));
我正在尝试 transfer/copy 从 object1 到 object2 的属性,但只有 object2 中未定义的属性。
在此先感谢,我希望这能清楚地表达出来!
let object1 = { a: 1, b: 2, c: 3, d: 4 }
let object2 = { a: 'string' }
fillObj = function (object2, object1) {
for (let key in object1) {
if (typeof object2.key === undefined) {
object2[key] = object1[key];
}
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
(1) 通过变量 属性 名称查看对象的属性,使用括号表示法,而不是点表示法
(2) 要检查某些内容是否未定义,可以直接与未定义进行比较,或者使用 typeof
并与 string 'undefined'
进行比较(但是此算法不需要此检查)
(3) 确保属性是自己的属性,而不是继承的属性,hasOwnProperty
let object1 = { a: 'string' }
let object2 = { a: 1, b: 2, c: 3, d: 4 }
fillObj = function (object2, object1) {
for (let key in object1) {
if (object1.hasOwnProperty(key)) {
object2[key] = object1[key];
}
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
console.log(fillObj(object2, object1));
或使用 Object.entries
,它仅迭代自有属性:
let object1 = { a: 'string' }
let object2 = { a: 1, b: 2, c: 3, d: 4 }
fillObj = function (object2, object1) {
for (const [key, val] of Object.entries(object1)) {
object2[key] = val;
}
return object2; //should return {a: 'string', b: 2, c: 3, d: 4 }
};
console.log(fillObj(object2, object1));