2016-09-28 8 views
0

これはスニペットです:このコードは機能していません。問題は配列内の配列を認識できません。配列内の配列をjavacriptで見つけよう

どうすれば改善できますか?

ありがとうございました!

<!DOCTYPE html> 
<html> 
<body> 

<p>The new ECMASCRIPT 5 method isArray returns true when used on an array.</p> 

<p id="demo"></p> 

<script> 
function findApple(arr, item) { 
    var count = 0; 
    for (var i = 0; i < arr.length; i++) { 
    if (Array.isArray(arr[i])) { 
     findApple(arr[i], item); 
    } 
    else if (arr[i] == "apple") { 
     count++; 
    } 
    } 
    return count; 
} 
var one = ["apple", "apple", ["orange", "apple", "banana"]]; 

var data = findApple(one, "apple"); 
alert(data); 
var item = document.getElementById("demo").innerHTML = data; 
</script> 

</body> 
</html> 
+2

ここでの問題は、 'findApple(ARR [i]は、項目)です;' - あなたは戻り値を使用していません。 – georg

+1

'それは配列'の中の配列を認識していません 'ええ、私は正しいとは思わない。副注記の – vlaz

+0

の場合は、elseの中のリンゴを 'item'にするべきではありません。さもなければ' item' varを渡すことに意味がありません – Pete

答えて

0

あなたは次のような問題があります:あなたは、スクリプトを書いたように

if (Array.isArray(arr[i])) { findApple(arr[i], item); } 

を、あなたはfindAppleが何かを返すことを知っています。だから、右の構文は次のようになります。

あなたが戻って呼び出し先にそれを渡したいと

var result=findApple(); 
は、単純に実行します。

count+=result; 
1

使用count += findApple(arr[i], item);

0

function findApple(arr, item) { 
 
    var count = 0; 
 
    for (var i = 0; i < arr.length; i++) { 
 
    if (Array.isArray(arr[i])) { 
 
     count+=findApple(arr[i], item); 
 
    } 
 
    else if (arr[i] == "apple") { 
 
     count++; 
 
    } 
 
    } 
 
    return count; 
 
} 
 
var one = ["apple", "apple", ["orange", "apple", "banana"]]; 
 

 
var data = findApple(one, "apple"); 
 
alert(data); 
 
var item = document.getElementById("demo").innerHTML = data;
<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p>The new ECMASCRIPT 5 method isArray returns true when used on an array.</p> 
 

 
<p id="demo"></p> 
 

 

 

 
</body> 
 
</html>

関連する問題