372 Stimmen

Was ist der effizienteste Weg, um N Arrays zu verketten?

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.

7voto

Zobia Kanwal Punkte 3627

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);

4voto

Dmitri Farkov Punkte 8543

Ganz einfach mit der Funktion concat:

var a = [1,2,3];
var b = [2,3,4];
a = a.concat(b);
>> [1,2,3,2,3,4]

4voto

gor Punkte 11180

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.

3voto

noob Punkte 18277

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.

3voto

Koushik Das Punkte 7270

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.com

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.

Powered by:

X