我想搜索一个数组数组,看看是否存在一个等于我提供的某个数组的数组。我尝试使用indexOf()
,但这不起作用。有没有人有这方面的好技术?
var ary = [['1','2'],['3','4'],['5','6']];
ary.indexOf(['1','2']); //I want to get 0 here, or something like -1 if it's not present
答案 0 :(得分:1)
将indexOf
与join
一起使用。对于一维数组而言,它不是必需的,但在这种情形中是一种有效的方法:
var comp = ['1','2'];
for(var i = 0, j = ary.length;i < j;i++) {
if(ary[i].join().indexOf(comp.join()) >= 0) {
//do stuff here
}
}
答案 1 :(得分:1)
var ary = [['1','2'],['3','4'],['5','6']];
function contains( array, value ){
for ( var i = 0; i < array.length; i++ ){
if ( array[i] === value )
return true;
if ( value instanceof Array
&& array[i] instanceof Array
&& value.length == array[i].length ){
var found = true;
for ( var j = 0; j < value.length; j++ )
if ( value[j] !== array[i][j] )
found = false;
if ( found )
return true;
}
}
return false;
}
console.log( contains( ary, ['1','2'] ) );
console.log( contains( ary, [1,'2'] ) );
console.log( contains( ary, ['3','4'] ) );
答案 2 :(得分:1)
据我所知,JavaScript没有检查多维数组索引的功能。您可以手动执行此操作:声明要查找的两个值,然后循环遍历数组并检查当前子阵列的第一个和第二个元素是否符合您的条件... ... 好的,我认为需要一个例子,抱歉我的可怕解释!
function indexMultiDArray (myArr){
var check = ['n1','n2'];
var i=0;
for (i; i < myArr.length; i++){
if (myArr[i][0]===check[0] && myArr[i][1]===check[1]){
alert(myArr[i][0]+' '+myArr[i][1]);
}
}
}
基本上,你循环遍历它:如果当前对联的第一个和第二个元素匹配check
对联的第一个和第二个元素,你就拥有它:用它做一些事情;)