当我运行以下代码时:
var object1 = {
a: 1,
b: 2
};
var object2 = {
b: 4,
c: 3
};
var obj1Keys = Object.keys(object1);
var obj2Keys = Object.keys(object2);
console.log(obj2Keys[0] in obj1Keys);
控制台记录错误。显然,object1和object2都具有属性&b;#b;#。我做错了什么?
答案 0 :(得分:1)
您需要改为使用includes()
方法。
console.log(obj1Keys.includes(obj2Keys[0]));
这是因为in operator适用于对象键。 "键"一个数组是数字索引(0
,1
等),而不是它们的值
答案 1 :(得分:0)
您需要获取对象,而不是带有要检查的键和in
operator的数组。这将检查对象和数组的键是否具有索引和长度属性。
如果您想使用密钥获取数组,可以使用Array#includes
。
var object1 = { a: 1, b: 2 },
object2 = { b: 4, c: 3 },
obj1Keys = Object.keys(object1),
obj2Keys = Object.keys(object2);
console.log(obj2Keys[0] in object1);
console.log(obj1Keys.includes(obj2Keys[0]));

答案 2 :(得分:0)
询问是否obj2Keys[0] in obj1Keys
,您问的是'b'
是['a', 'b']
的关键字。不是。它是['a', 'b']
的值。您可以这样检查:
obj1Keys.includes(objKeys[0])