检查多维数组中的数组(pref-jQuery)

时间:2010-12-20 20:37:41

标签: javascript jquery arrays multidimensional-array unique

我有一个多维数组,我正在尝试检查它是否包含另一个数组。 我目前正在使用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]]

所以显然有些东西不起作用。

1 个答案:

答案 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