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、2 つの配列メソッド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

次のコードを使用して、配列を検索できます。

<!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 に答える
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 に答える