Was ist der effizienteste Weg, um N Arrays von Objekten in JavaScript zu verketten?
Die Arrays sind veränderbar, und das Ergebnis kann in einem der Eingabe-Arrays gespeichert werden.
Was ist der effizienteste Weg, um N Arrays von Objekten in JavaScript zu verketten?
Die Arrays sind veränderbar, und das Ergebnis kann in einem der Eingabe-Arrays gespeichert werden.
Array zusammenführen mit Schieben:
const array1 = [2, 7, 4];
const array2 = [3, 5,9];
array1.push(...array2);
console.log(array1)
使用する Concat y Spread-Operator:
const array1 = [1,2];
const array2 = [3,4];
// Method 1: Concat
const combined1 = [].concat(array1, array2);
// Method 2: Spread
const combined2 = [...array1, ...array2];
console.log(combined1);
console.log(combined2);
Sie können verwenden jsperf.com Website, um die Leistung zu vergleichen. Hier ist der Link zu konkaten .
Vergleich hinzugefügt zwischen:
var c = a.concat(b);
und:
var c = [];
for (i = 0; i < a.length; i++) {
c.push(a[i]);
}
for (j = 0; j < b.length; j++) {
c.push(b[j]);
}
Die zweite ist in Chrome fast 10 Mal langsamer.
Wenn Sie ein Array von Arrays haben und die Elemente zu einem einzigen Array zusammenfassen möchten, versuchen Sie den folgenden Code (erfordert ES2015):
let arrOfArr = [[1,2,3,4],[5,6,7,8]];
let newArr = [];
for (let arr of arrOfArr) {
newArr.push(...arr);
}
console.log(newArr);
//Output: [1,2,3,4,5,6,7,8];
Oder wenn Sie sich für funktionale Programmierung interessieren
let arrOfArr = [[1,2,3,4],[5,6,7,8]];
let newArr = arrOfArr.reduce((result,current)=>{
result.push(...current);
return result;
});
console.log(newArr);
//Output: [1,2,3,4,5,6,7,8];
Oder noch besser mit ES5-Syntax, ohne den Spread-Operator
var arrOfArr = [[1,2,3,4],[5,6,7,8]];
var newArr = arrOfArr.reduce((result,current)=>{
return result.concat(current);
});
console.log(newArr);
//Output: [1,2,3,4,5,6,7,8];
Dieser Weg ist praktisch, wenn Sie die Anzahl der Arrays zum Zeitpunkt des Codes nicht kennen.
Hier ist eine Funktion, mit der Sie mehrere Arrays miteinander verknüpfen können
function concatNarrays(args) {
args = Array.prototype.slice.call(arguments);
var newArr = args.reduce( function(prev, next) {
return prev.concat(next) ;
});
return newArr;
}
Beispiel.
console.log(concatNarrays([1, 2, 3], [5, 2, 1, 4], [2,8,9]));
wird ausgegeben
[1,2,3,5,2,1,4,2,8,9]
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.