检查javascript中的数组中是否已存在元素

时间:2013-10-09 05:11:39

标签: javascript arrays

我有以下数组 array = [['apple',23,1,20],['orange',12,10,10]] 我如何检查上面的数组中是否存在10个?我试图使用array.indexOf,但它没有正常工作。可以有人帮忙吗?

4 个答案:

答案 0 :(得分:1)

  1. .indexOf() 可行,问题出在 array 变量上。
  2. array 变量本身包含2个不同的数组。
  3. 请尝试以下代码。

    var array = [
        ['apple', 23, 1, 20],
        ['orange', 12, 10, 10]
    ];
    for (var i = 0; i < array.length; i++) {  //Iterate through arrays in array
        if (array[i].indexOf(10) > -1) {
            alert("Yep");
        } else {
            alert("nope");
        }
    }
    

    选中此JSFiddle

答案 1 :(得分:1)

ECMAScript 5中的

,有两种数组方法someindexOf

var search = 10 ;

var found  = a.some( function( v ) {
    return v.indexOf( search ) !== -1 ;
});

if ( found ) {
    alert( 'exists')
}

答案 2 :(得分:0)

问题可能是因为:

  • 您有嵌套数组
  • 所有浏览器都不支持Array.indexOf

以下内容应该有效:

function includes(arrayOfArrays, item) {
    var array, i, j;
    for(i=0; i<arrayOfArrays.length; ++i) {
        array = arrayOfArrays[i];
        for(j=0; j<array.length; ++j) {
            if(array[j] === item) {
                return true;
            }
        }
    }
    return false;
}

答案 3 :(得分:0)

您可以使用以下代码在数组中进行搜索。

<!DOCTYPE html>
<html>
<body>

<script>
var i,j;
var toFind = 10;
var array = new Array();
array = [['apple',23,1,20],['orange',12,10,10]]

for (i=0;i<array.length;i++)
{
   for(j=0;j<array[i].length;j++)
   {
       if(array[i][j] == toFind)
       document.write("element found <br/>");
   }
}
</script>

</body>
</html>

其中toFind是您要查找的元素或数字。