2016-09-29 4 views
-3

왜이 배열 구문 분석이 작동하지 않습니까?배열을 반으로 구문 분석

var input = [ 'sam 99912222', 
 
    'tom 11122222', 
 
    'harry 12299933', 
 
    'sam', 
 
    'edward', 
 
    'harry' ]; 
 

 
var numItems = 3; 
 
console.log(input); 
 

 
var phoneNames = []; 
 
var searchNames = []; 
 
var phoneBook = []; 
 

 
for (i = 0; i < numItems; i++) { 
 
    phoneNames.push(input[i]); 
 
    var j = i + numItems; 
 
    searchNames.push(input[j]); 
 
} 
 
console.log("phoneNames: " + phoneNames); 
 
console.log("searchNames: " + searchNames);

출력은 :

[ 'sam 99912222', 
    'tom 11122222', 
    'harry 12299933', 
    'sam', 
    'edward', 
    'harry' ] 
phoneNames: sam 99912222,tom 11122222,harry 12299933 
searchNames: ,, 

왜 searchNames 값 충만되지 않는 이유는 무엇입니까?

+0

이 얼마나 큰 : 여기

var numItems = input.length/2; 

을 그냥 도망 내 전체 코드입니다 입력 배열? 인덱스 j가 입력 배열의 크기보다 큰가? – auburg

+1

"코드 스 니펫 실행"버튼을 클릭하면 출력이 예상대로 표시됩니다. 실제 입력 또는 실제 코드가 다른 것입니다. – JJJ

+0

스 니펫을 확인하고 searchNames는 @JJJ에 오른쪽 – havenchyk

답변

1

입력 배열이 아래 코드와 같다고 가정하면 솔루션이 완벽하게 작동합니다. 처음에 입력을 추가 한 것과 똑같은 코드 스 니펫을 사용했습니다.

var input = [ 'sam 99912222', 
       'tom 11122222', 
       'harry 12299933', 
       'sam', 
       'edward', 
       'harry' 
      ]; 

이 다음과 같은 출력에 이르게 :

phoneNames: sam 99912222,tom 11122222,harry 12299933 
searchNames: sam,edward,harry 

또한, 당신은 항상 데이터 구조 (짝수 배열의 길이)의 유형을 가지고 있고, numItems로 배열 길이의 절반을 경우 , 당신은 제한된 예외를 가진 어떤 말썽도 있으면 안된다. 동적 반복 값 i를 들어, 단지 배열 크기의 절반 걸릴 :

 var input = [ 'sam 99912222', 
      'tom 11122222', 
      'harry 12299933', 
      'sam', 
      'edward', 
      'harry' 
     ];   

     var numItems = input.length/2; 

     console.log(input); 

     var phoneNames = []; 
     var searchNames = []; 
     var phoneBook = []; 

     for (i = 0; i < numItems; i++) { 
      phoneNames.push(input[i]); 
      var j = i + numItems; 
      searchNames.push(input[j]); 
     } 
     console.log("phoneNames: " + phoneNames); 
     console.log("searchNames: " + searchNames); 
-1

var input = [ 'sam 99912222', 
 
    'tom 11122222', 
 
    'harry 12299933', 
 
    'sam', 
 
    'edward', 
 
    'harry' ]; 
 

 
var numItems = 6; 
 

 
var phoneNames = []; 
 
var searchNames = []; 
 
var phoneBook = []; 
 

 
for (i = 0; i < numItems; i++) { 
 
    var val = input[i].split(" "); 
 
    phoneNames.push(val[0]); 
 
    searchNames.push(val[1]); 
 
} 
 
console.log("phoneNames: ", phoneNames); 
 
console.log("searchNames: ", searchNames);

+0

결과는 입니다. phoneNames : 샘, 톰, 해리, 샘, 에드워드, 해리 searchNames : 99912222,11122222,12299933 ,,, –

관련 문제