我有一个多维数组,我正在尝试检查它是否包含另一个数组。 我目前正在使用jQuery.inArray函数(我正在尝试使用Array.prototype但是仍然遇到错误,之前从未使用过)。
我正在尝试确保我的父数组不会添加两次相同的子数组
if(jQuery.inArray(new Array(step[0],step[1],r2),unavailArray)==-1){ alert(jQuery.inArray(new Array(step[0],step[1],r2),unavailArray)); unavailArray.push(new Array(step[0],step[1],r2)); }
我也试过
jQuery.inArray("[step[0],step[1],r2]",unavailArray)==-1
和
jQuery.inArray([step[0],step[1],r2],unavailArray)==-1
它们都返回-1,当我查看数组时,我有
[[630,690,09],[3180,3220,2],[3180,3220,2]]
所以显然有些东西不起作用。
答案 0 :(得分:3)
我相信你的问题在于你不断为数组添加new Array()
而不是给它们一个变量名来指向它们,因此它们永远不会真的相同,即使它们可能具有相同的精确度彼此的内容。
为此,您可以根据需要将new Array([step[0],step[1],r2])
分配给变量并检查该变量而不是new Array()
var blah = new Array(step[0],step[1],r2);
// this will add the array to unavailArray
if(jQuery.inArray(blah,unavailArray)==-1){
alert(jQuery.inArray(blah,unavailArray));
unavailArray.push(blah);
}else{
alert('found so was not added');
}
// Try again and it wont, instead firing off the alert message
if(jQuery.inArray(blah,unavailArray)==-1){
alert(jQuery.inArray(blah,unavailArray));
unavailArray.push(blah);
}else{
alert('found so was not added');
}
这是我用来说明这一点的JSFiddle的链接: Live Example