將3個數組連接成1個數組有沒有簡短的方法/最佳做法?在javascript /下劃線中將3個數組連接到1個數組中
var arr = [],
arr1 = [ 1 , 2 , 3 ],
arr2 = [ 4 , 5 , 6 ],
arr3 = [ 7 , 8 , 9 ];
arr = arr.concat(arr1);
arr = arr.concat(arr2);
arr = arr.concat(arr3);
將3個數組連接成1個數組有沒有簡短的方法/最佳做法?在javascript /下劃線中將3個數組連接到1個數組中
var arr = [],
arr1 = [ 1 , 2 , 3 ],
arr2 = [ 4 , 5 , 6 ],
arr3 = [ 7 , 8 , 9 ];
arr = arr.concat(arr1);
arr = arr.concat(arr2);
arr = arr.concat(arr3);
最短(和最快)的解決方案是arr = arr1.concat(arr2, arr3);
備選方案:
arr = arr.concat(arr1, arr2, arr3)
arr = Array.prototype.concat(arr1, arr2, arr3)
arr = [].concat(arr1, arr2, arr3)
沒有太多的事情要做。你可以簡化它:
arr = arr.concat(arr1).concat(arr2).concat(arr3)
或者請參閱@Radko Dinev答案,以更簡單(更好)的方式來做到這一點。
如果數組的數組(與陣列的變量數),則可以嘗試:
var m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
var new_m = [];
new_m.concat.apply(new_m, m);
_.reduce(arrays, function(result, arr) {
return result.concat(arr)
}, [])
如果OP使用下劃線或lodash庫,這個解決方案只會起作用。爲此,Javascript有一個本地['Array.reduce'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)方法。 –
我最終使用lodash進行map/reduce等操作,所以我用它在數組上進行這些操作。但是,如果你不想使用lodash,你可以使用Array方法。 – tldr
我會用_.flatten
。
var arr = [[1,2,3], [4,5,6], [7,8,9]];
var result = _.flatten(arr) // [1,2,3,4,5,6,7,8,9]
Spread syntax使級聯簡單:
arr = [...arr1, ...arr2, ...arr3]
你甚至可以包括非數組項在線:
arr = [...arr1, 42, ...arr2, ...arr3]
更靈活的方式:
var arraysToConcat = [arr1, arr2, arr3];
var arr = Array.prototype.concat.apply([], arraysToConcat);
arr.concat (arr1,arr2,arr3),[w3schools]( http://www.w3schools.com/jsref/jsref_concat_array.asp) – arty
你也可以用'arr1 + arr2 + arr3'來'concat' –
@MuhammadHaseebKhan:不,你不能在JavaScript中做到這一點。這會將三個數組轉換爲字符串(在每個數組上調用.join(','))並連接這三個字符串。但是,例如,您可以在PHP中使用加號運算符來連接數組。 –