2017-08-20 14 views
-1

3つの配列の各インデックスを解析し、同じインデックスで各値を連結して配列を1つだけにするにはどうすればよいですか?配列の連結

例入力:

index 0 of array 1 value : "Car" 
index 0 of array 2 value : "red" 
index 0 of array 3 value : "Nikolai" 

期待出力、アレイ(オールインワン):

index 0 value : "Car , red , Nikolai" 
+0

各配列を反復処理してそのインデックス0を保存した後、['Array.join()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join)を呼び出します。 – h2ooooooo

+0

これまでに何を試しましたか? – twoleggedhorse

答えて

0

は、アレイ状に配列を追加する配列に反復し、それの最初の値を取得することString変数で連結します。 最後にこのString変数を新しい配列に追加します。

var arr1 = ['Car', 'red', 'Nikolai']; 
var arr2 = ['Car', 'red', 'Nikolai']; 
var arr3 = ['Car', 'red', 'Nikolai']; 
var arrs = [arr1, arr2, arr3]; 

var concatenatedString = ""; 
arrs.forEach(function(arr) { 
    if (concatenatedString.length > 0){ 
    concatenatedString += ", "; 
    } 
    concatenatedString += arr[0]; 
}); 

var result = [concatenatedString]; 
+0

OPには0のインデックスに3つの配列があり、コンマで区切って1つの文字列にしたいと思っています。 – h2ooooooo

0

forループでは不可能でしょうか?

for (var i = 0; i < array.length; i++) { 
    newArray[i] = Array1[i] + "," + Array2[i] + "," + Array3[i] 
} 
0

単純なforループを使用できます。配列が同じサイズでないかもしれないことだけを心配してください。

var a = ["a", "aa", "aaa"]; 
var b = ["b", "bb", "bbb"]; 
var c = ["c", "cc"]; 

var all = []; 

for (var i = 0; i < Math.min(a.length, b.length, c.length); i++) { 
    all[i] = [a[i], b[i], c[i]].join(" , "); 
} 
0

ES6では、配列の値を新しい配列に広げることができます。

const vehicles = ["Car"]; 
const colors = ["Red"]; 
const names = ["Nikolai"]; 

const combined = [...vehicles, ...colors, ...names]; 

申し訳ありませんが、今私はあなただけの各配列の同じインデックスを組み合わせたいあなたの質問を再読み込み:

function returnCombined(index) { 
    return [vehicles[index], colors[index], names[index]]; 
} 
0

これがために良いケースですので、あなたはこのような何かを行うことができます.map()および.join()

var result = array.map(a => a[0]).join(", "); 

または.reduce()、あなたは結果オフ末尾のカンマを.slice()する必要がありますけれども。

あなたはインデックス1、インデックス2のために起こることも、この連結をしたい一般的なケースでは
var result = array.reduce((s,a) => s + a[0] + ", ", "").slice(0, -2); 
3

、...など、あなたがこのES6の機能を使用することができます。

function joinTransposed(delim, ...args) { 
 
    return args[0].map((_, i) => args.map(w => w[i]).join(delim)); 
 
} 
 

 
// Example 
 
var a = ["c", "y", "s", "h"], 
 
    b = ["a", "o", "e", "i"], 
 
    c = ["n", "u", "e", "m"]; 
 

 
var res = joinTransposed(' , ', a, b, c); 
 
console.log(res);