2016-09-28 2 views
0

이것은 코드 조각입니다.이 코드는 작동하지 않습니다. 문제는 배열 내부의 배열을 인식하지 못하는 것입니다.자바 스크립트에서 배열 안쪽에 배열을 찾으십시오.

어떻게 향상시킬 수 있습니까?

감사합니다.

<!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 (편곡 [I], 항목)입니다'- 당신은 반환 값을 사용하지 않습니다. – georg

+1

'배열 안에 배열을 인식하지 못합니다. 맞습니다. 보조 노트에 – vlaz

+0

이 있으면 else의 apple이 '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>

관련 문제