我有一个数组,例如,2d,看起来像这样:`var arr = [[" 1"," 2"," 3&#34 ;],[" 4"," 5"],[" 6"]];'
当我运行$.inArray("4", arr);
或arr.indexOf("4")
时,我得到-1表示它不在数组中。但是,它位于一个内部数组中。
如何判断它是在数组中还是在数组中的元素的任何数组中?换句话说,在数组的任何维度。
答案 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()
现在有效。