javascript - 如何检查对象中是否存在数字数组

标签 javascript jquery

我正在尝试编写一些代码来检查对象中是否存在存储在数组中的一组数字。使用我现在的代码,它总是返回 -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/

相关文章:

javascript - 如何在 axios 中设置多个授权 header ?

javascript - Vue/Webpack/Typescript - 如何使用 jQuery 插件

javascript - Javascript 中的 jQuery POST 显示错误

jquery - 调用 jquery ajax - .fail 与 :error

javascript - 如何使用 jQuery load 方法为正在加载的元素设置动画

javascript - React 组件中 "shouldComponentUpdate"生命周期方法的默认实现是什么

javascript - 检索属性和字符串值,该字符串采用带有属性的标签格式

jquery - 切换 jQuery.remove()

javascript - Underscore.js 生成的模板的事件处理程序

javascript - 在故事书 5.2 中使用装饰器包装故事 - typescript/Angular