我正在尝试编写一些代码来检查对象中是否存在存储在数组中的一组数字。使用我现在的代码,它总是返回 -1。
function checkHorizonal() {
var x= ['1', '2' ,'3'];
var y= ['4', '5', '6'];
var z= ['7', '8', '9']
console.log(jQuery.inArray(x, squaresClicked));
}
这是 squaresClicked
对象内容:
Object {1: "1", 2: "-1", 3: "1"}
可以看到键1,2,3存在,但是会返回-1。
最佳答案
来自 jQuery 文档:
jQuery.inArray( value, array [, fromIndex ] )
jQuery.inArray
将无法按照您使用的方式工作。它检查数组内容,而不是对象键。您的值 x
没问题,但您传递的是对象而不是数组。
如果您想查看对象中是否存在一组整数作为键,您可以尝试以下操作(假设您使用的是 JavaScript >= 1.6):
myArray.filter(function(x) {
// check if value is a key
return (x in squaresClicked);
}).length == myArray.length;
基本上,我们迭代数组并仅返回那些作为对象 squaresClicked
中的键存在的数组。如果新数组与原始列表的长度相同,则这些值必须全部作为对象中的属性存在。
如果您不想在对象的整个原型(prototype)链中查找数组值,则需要使用 hasOwnProperty
而不是 in
。
像这样:
return (squaresClicked.hasOwnProperty(x));
您可以阅读有关此方法的更多信息 here .
关于javascript - 如何检查对象中是否存在数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20316734/