Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:为什么';t jQuery.inArray()工作吗?_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript jQuery:为什么';t jQuery.inArray()工作吗?

Javascript jQuery:为什么';t jQuery.inArray()工作吗?,javascript,jquery,arrays,Javascript,Jquery,Arrays,如图所示,我只是在数组上执行inaray,查找节点。$shapes中的$previous_selected_node和索引37处的项是同一个对象。。。。所以为什么不起作用 编辑: 我找到了另一种方法来搜索其中一位提问者的答案: var result = -1; jQuery.each(shapes, function(key, value){ if (value.id == shape.id){ result = key; } }); return result;

如图所示,我只是在数组上执行inaray,查找节点。$shapes中的$previous_selected_node和索引37处的项是同一个对象。。。。所以为什么不起作用

编辑: 我找到了另一种方法来搜索其中一位提问者的答案:

var result = -1;
jQuery.each(shapes, function(key, value){
    if (value.id == shape.id){
        result = key;
    }
});
return result;

显然,我的一部分问题是我不能在一个循环中返回。(我在找到匹配项时立即返回,这导致了一些问题。)

您的对象不是数组。
$。inArray
仅适用于长度为
且一组属性名为
0
到长度为-1的类似数组的对象

您需要手动搜索非数组。
例如,您可以在
循环中为/
使用
,循环所有实际存在的属性,并查看其中是否有与您的对象匹配的属性:

for (var key in $shapes) {
    if ($shapes[key] === yourObject) {
        //Match!
    }
}

你做得不对。它实际上是
$.inArray(值,数组)


正如其他人已经指出的那样:inArray用于数组,而不是对象。

是否
$shapes
具有
length
?$shapes.length未定义。。。所以然后它实际上不是一个数组,即使我给它赋值,比如$shapes[id]=val;所以那么我该如何搜索它呢?通常,当问题的形式是“为什么
不起作用?”时,请回答-它被错误地使用了
$shapes
可能不是数组,而且比较对象也容易遇到麻烦。那么,我如何搜索这是什么对象呢?@TheLindyHop,使用,但是,请注意如何比较元素。如何?我已经试过了。每一个,为了循环。。。也不是很确定这个对象是什么。很好,我找到了一个类似的解决方案,添加到OP