javascript - 使用 JavaScript 的 IndexOf 在数组中查找数组

标签 javascript arrays multidimensional-array find indexof

我正在尝试进行非常简单的indexOf搜索,但没有成功。

我有一个像这样的二维数组:

var fruits = new Array([]);
fruits.push(["Banana", "Orange", "Apple", "Mango"]);
fruits.push(["Apple", "3Orange", "Amar", "Mango"]);
fruits.push(["Apple", "1Orange", "Amar", "Mango"]);
fruits.push(["Apple", "2Orange", "Amar", "Mango"]);

现在我正在创建另一个数组,如下所示,它与上述数组的第三条记录匹配:

var str = new Array([]);
str.push(["Apple", "2Orange", "Amar", "Mango"]);

现在我尝试查找水果中是否存在 str:

var i  = fruits.indexOf( str );
alert(i);

但我返回 -1 而不是有效的索引值。我做错了什么?

编辑

我想出了一个非常简单的方法。这似乎也有效:

var strFruits = fruits.toString();
var newStr = str.toString();
var i  = fruits.indexOf( str );
alert(i);

这显然存在在两个记录之间查找匹配值的缺陷。但就我而言,我知道由于我正在使用的数据集的性质,这是不可能的。作为通用解决方案,这不是一个好的做法,但在特定情况下它可能很方便。

最佳答案

如果将对象传递给 Array.prototype.indexOf(),则将验证其引用而不是其值。所以你必须编写这样的代码来实现你想要的,

var str = new Array([]);
str.push(["Apple", "2Orange", "Amar", "Mango"]);
var i  = checkIt(fruits, str[0]);
alert(i);

function checkIt(src, arr){
  arr = arr.toString();
  var ind = -1;
  src.forEach(function(itm,i){
    if(itm.toString() == arr){
      ind = i;
      return;
    }
  });
  return ind;
}

DEMO

关于javascript - 使用 JavaScript 的 IndexOf 在数组中查找数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35650984/

相关文章:

javascript - JQuery 无法识别的表达式 [href=#undefined]

Javascript - 带有 requestAnimationFrame 的面向对象 Canvas 游戏

c - 逐字符打印字符串数组

c - 递归合并排序不起作用

arrays - 如何在 m 排序数组中找到一个元素,其中数组的其余部分为零且未给出 m

ios - 如何在 UIPicker 中首先选择具有特定标题的数组

java - 为什么.class文件的常量池表中没有列出一维数组类型?

javascript - contenteditable div 获取光标位置

javascript - 使用 swal 警报将 mvc 表单提交到带有参数的函数

java - Java中如何存储多人信息