2016-06-23 19 views
2

配列の2つの配列があり、最初に位置名が含まれ、2番目に位置緯度と経度の値が含まれています。私は必要なものJavaScript - 項目ごとに2つの配列を結合する

var arr1 = [['Location #1'],['Location #2']]; 
var arr2 = [['36.1978319','-83.02365759999999'],['38.679842','-121.7457402']]; 

項目の二組の複合配列であるが、そうような連結されない:各アレイ内の各アイテムは、他に相手だし、両方の配列のようなアイテムの同じ数が非常に持っているに対応します:

:私はこれを行うと考えることができ

var arr3 = [['Location #1','36.1978319','-83.02365759999999'], 
      ['Location #2','38.679842','-121.7457402']]; 

唯一の方法は、このような... forループを組み合わせたが、私はこれも可能であることを確認し、構文が正しくありません得ることができない何かのようになります

for ((var a = 0; a < arr1.length; a++) && (var b = 0; b < arr2.length; b++)) { 
    arr3.push(arr1[a] + ',' + arr2[b]); 
} 

純粋なjavascriptでこの問題を解決する方法はありますか?

+0

Arr1.lengthのループを実行します。最後のarr3の長さは次のようになります。 arr1とarr1とarr2の各要素を結合すると、期待通りの結果が得られます –

+0

インデックス付き配列にすべてが必要な理由はありますか?位置と座標のキー/値を使用して、場所を通常のオブジェクト{}として保存することを検討することもできます。意味的にはるかに意味があります。 – skyline3000

+0

@ skyline3000 - ジオコードされた場所のアイテムが返される方法を制御できません。そうしないと、オブジェクトを絶対に使用してしまいます。あなたは正しいです、それは行く方法でしょう。 – Lars

答えて

7

私はその短さのためArray.mapをお勧め: より一般的なソリューションについては

var arr1 = [['Location #1'], ['Location #2']]; 
 
var arr2 = [['36.1978319', '-83.02365759999999'], ['38.679842', '-121.7457402']]; 
 

 
var combined = arr1.map((element, i) => element.concat(arr2[i])); 
 

 
console.log(combined);

(配列の任意の数を組み合わせ)、を参照してください。 Javascript equivalent of Python's zip function

+0

@le_mこれは美しく機能しました!栄誉...この完璧な最小限のソリューションに感謝します – Lars

3

2つの配列の長さが実際に等しく、インデックスに対応する場合。これで必要なのは次のとおりです。

for (var a = 0; a < arr1.length; a++) { 
    arr3.push(arr1[a] + ',' + arr2[a]); 
} 
1

forループ内に2つのコンターを結合しようとしています:)。

あなたはこれをしたい:

var resultArray = new Array(); 
for (var i = 0; i < arr1.length; i++) { 
    resultArray.push([arr1[i], arr2[i][0], arr2[i][1]]); 
} 
関連する問題