2016-09-29 7 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になります99912222,11122222,12299933 ,,, –