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

标签 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]]

很明显有些东西不起作用。

最佳答案

我相信你的问题是你一直在为数组添加 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/

相关文章:

javascript - 循环并不总是被调用,但检查更改事件的函数总是在循环内调用

javascript - 如何以增量分辨率下载图像?

Javascript - 清空对象而不是创建新对象

jquery - 使@Html.Checkbox用于触发JQuery点击事件

javascript - 使用 Angular JS 显示第一个 JSON 数据对象而不选择任何链接

javascript - "2011-01-27T04:59:00Z"形式的日期字符串——有些浏览器接受它们,有些则不接受。为什么?

javascript - 通过查找 id-javascript 更改 href

javascript - 单击后不会立即加载预加载器

javascript - 返回一个对象,其中包含单词列表中每个单词的属性

c# - CSV 文件到位图