如果item在多维数组的任何维度中

时间:2014-06-13 14:33:03

标签: javascript jquery arrays

我有一个数组,例如,2d,看起来像这样:`var arr = [[" 1"," 2"," 3&#34 ;],[" 4"," 5"],[" 6"]];'

当我运行$.inArray("4", arr);arr.indexOf("4")时,我得到-1表示它不在数组中。但是,它位于一个内部数组中。

如何判断它是在数组中还是在数组中的元素的任何数组中?换句话说,在数组的任何维度。

2 个答案:

答案 0 :(得分:2)

更好的解决方案是创建一个递归函数,在数组中搜索值。

如果数组只有两个级别,如示例中所示,还有一个更方便的解决方案:展平数组并简单地使用indexOf

var arr = [["1", "2", "3"], ["4", "5"], ["6"]];
var flattened = Array.prototype.concat.apply([], arr);
alert(flattened.indexOf("4"));

答案 1 :(得分:1)

你可以这样做:

var arr = [["1", "2", "3"], ["4", "5"], ["6"]];
if(arr.join().split(',').indexOf("4") != -1){
   // do something.     
}

.join()将数组转换为逗号分隔的元素,.split(',')从中创建一个新的数组,这是一个扁平的数组。所以,.indexOf()现在有效。