[英]Javascript Object.keys issue
当我运行以下代码时:
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);
控制台记录为false。 显然,对象1和对象2都具有属性“ b”。 我究竟做错了什么?
您需要改用includes()
方法。
console.log(obj1Keys.includes(obj2Keys[0]));
这是因为in运算符可用于对象键。 的“钥匙”到阵列是数索引( 0
, 1
,等等),而不是它们的值
您需要获取对象,而不是带有用于检查和in
操作符的键的数组。 此检查对象的键,并且数组具有索引和长度属性。
如果您想使用键来获取数组,cou可以使用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]));
通过询问obj2Keys[0] in obj1Keys
,您正在询问'b'
是否为['a', 'b']
。 不是。 它的值 ['a', 'b']
。 您可以这样检查:
obj1Keys.includes(objKeys[0])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.