Javascript Object.keys问题

时间:2018-02-19 17:59:58

标签: javascript key javascript-objects

当我运行以下代码时:

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;#。我做错了什么?

3 个答案:

答案 0 :(得分:1)

您需要改为使用includes()方法。

console.log(obj1Keys.includes(obj2Keys[0]));

这是因为in operator适用于对象键。 "键"一个数组是数字索引(01等),而不是它们的值

答案 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])