2017-10-11 9 views
1

2つの配列を特定の方法でマージしようとしていますが、これを行うための正しい構文が見つかりません。2つの配列を連結しない2つの別々の配列から1つの共通変数

primaryData = [1,2] 
secondaryData = [3,4] 
label = [label1, label2] 

現在、これは

  data = $.map(labels, function(v, i) { 

      return [[" " + v, " " + primaryData[i], " " + secondaryData[i]]] ; 

     }); 

を動作し、私の出力できます:

[["label1", "1"], ["label2", "2"]] 

配列のように、2つの配列を。

[["label1", "1"], ["label2", "2"], ["label1", "3"], ["label2", "4"]] 

だから基本的には、「ラベル」で二回同じことをやって、その後、2つの異なるソースから番号を追加します。

は、しかし、私はこれをしたいです。

私はこれ試してみました:

  data = $.map(labels, function(v, i) { 

      return [[" " + v, " " + primaryData[i]], [" " + v, " " + secondaryData[i]]]; 

     }); 

をしかし、それは私を提供しています。配列が連結的な方法でマージされているようなので、それはそう

[["label1", "1"], ["label1", "3"], ["label2", "2"], ["label2", "4"]] 

。コンマ区切りの代わりに+を使用すると、配列内に2つの配列が作成されるのではなく、配列内の2つのオブジェクトが作成されます。

+0

入力配列の投稿 – RomanPerekhrest

答えて

1

をループするための単純なを使用することができます。

var primaryData = [1, 2], 
 
    secondaryData = [3, 4], 
 
    label = ['label1', 'label2'], 
 
    result = primaryData.concat(secondaryData).map(function(a, i) { 
 
     return [label[i % 2], a.toString()]; 
 
    }); 
 
    
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

ありがとう、これは意図して動作します:) – NicklasN

1

あなたがprimaryDatasecondaryDataを連結し、剰余演算子と反復配列の値と、次にlabelの値をマッピングすることができ、「

var data = []; 
 

 
for(var i = 0; i < 4; i++) { 
 
    data.push(["label" + (i % 2 + 1), (i + 1).toString()]); 
 
} 
 

 
console.log(data);

+0

これは他の配列とはあまり関係がありません。または、私は単にあなたがそれを行う方法を見ることができません:data2.push([labels +(i%2 + primaryData)、(secondaryData).toString()]); – NicklasN

+0

これにより、配列なしで必要な結果が得られます。配列が必要な場合は、@ NinaScholzの答えを使用してください。 –

+0

私の質問は、配列に基づいていたが、あなたに感謝、Ninasは意図したとおりに動作します:) – NicklasN

関連する問題