Sie könnten tun die folgenden:
var arr1 = ["a", "b", "c"];
var arr2 = ["k",undefined,"l","m","n"];
var arr3 = [];
function join_arrays(arr1,arr2){
arr3 = arr2;
var i = arr3.indexOf(undefined);
while(i !=- 1){
arr3[i] = arr1[i];
i = arr3.indexOf(undefined);
}
return arr3;
}
Allerdings gibt es hier eine kleine Einschränkung, soweit meine Tests in JSBin mir gezeigt haben, dass Sie die leeren Werte, die ersetzt werden sollen, explizit auf undefined
gesetzt haben, wie in meinem Beispiel. Wenn das für dich nicht optimal ist, könnte es einen besseren Weg geben als den, den ich hier gezeigt habe.
Hoffentlich läuft dies schneller als Ihr Code, da es nur so oft durchlaufen wird, wie für die Ersetzungen erforderlich ist und arr3
sofort mit arr2
füllen wird.
UPDATE:
Beachten Sie, dass, während die obige Funktion ist, ist es nicht sicher ist, weil, wenn das zweite Array leere Elemente in einem Index hat, die nicht in dem ersten ist, es wird eine verursachen Error. Daher könnten Sie so etwas tun:
function join_arrays(arr1,arr2){
arr3=arr2;
var i = arr3.indexOf(undefined);
while(i!=-1 && i<arr1.length){
arr3[i]=arr1[i];
i=arr3.indexOf(undefined);
}
return arr3;
}
Also für var arr2 = ["k",undefined,undefined,"l","m","n",undefined]
Ergebnis wird ["k", "b", "c", "l", "m", "n", undefined]
mit dieser Methode, statt einen Fehler oder eine Endlosschleife bekommen!
Wie können Sie feststellen, dass es zu langsam ist? –
Ich brauche nur etwas schneller. Hat Tonnen von Arrays. –
Wenn Sie Ihren Code schneller machen wollen, dann fügen Sie die Operation 'arr1.length' nicht zuerst in den 'i
Redu