我有以下数组 array =[['apple',23,1,20],['orange',12,10,10]] 如何检查上述数组中是否存在 10?我尝试使用数组。 indexOf 但效果不佳。有人可以帮忙吗?
问问题
7900 次
4 回答
1
.indexOf()
会起作用,问题出在array
变量上。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
,有两种数组方法some
和indexOf
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 回答