0

我有以下数组 array =[['apple',23,1,20],['orange',12,10,10]] 如何检查上述数组中是否存在 10?我尝试使用数组。 indexOf 但效果不佳。有人可以帮忙吗?

4

4 回答 4

1
  1. .indexOf()会起作用,问题出在array变量上。
  2. array变量本身包含 2 个不同的数组。

试试下面的代码。

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

于 2013-10-09T05:17:16.593 回答
1

在 中ECMAScript 5,有两种数组方法someindexOf

var search = 10 ;

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

if ( found ) {
    alert( 'exists')
}
于 2013-10-09T05:23:44.763 回答
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;
}
于 2013-10-09T05:17:49.240 回答
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 是您要查找的元素或数字。

于 2013-10-09T05:35:23.793 回答