2016-09-28 50 views
0

這是代碼片段:此代碼不起作用,它不能識別數組內的數組。找不到數組中的數組javascript

我該如何改進?

謝謝!

<!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

在一個側面說明,不應該在其他的蘋果,如果是'項目',否則沒有一點在傳遞'項目'變種 – Pete

回答

0

您有以下問題:

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

當你寫劇本,你知道findApple RETURNS東西。所以,正確的語法是:

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>