我有一个多维数组,我正在尝试检查它是否包含另一个数组。 我现在正在使用 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]]
很明显有些东西不起作用。
最佳答案
我相信你的问题是你一直在为数组添加 new Array()
而不是给它们一个变量名来指向它们,因此它们永远不会完全相同,即使它们可能具有完全相同的内容。
要使其按您希望的方式工作,您需要将 new Array([step[0],step[1],r2])
分配给一个变量并检查该变量而不是 新数组()
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
关于javascript - 检查多维数组中的数组(pref-jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493706/