Je ne suis pas sûr d'être plus efficace en termes de big-O, mais l'utilisation de la unshift
méthode est certainement plus concise:
var a = [1, 2, 3, 4];
a.unshift(0);
a; // => [0, 1, 2, 3, 4]
[Éditer]
Ce benchmark jsPerf montre qu'il unshift
est décemment plus rapide dans au moins quelques navigateurs, indépendamment des performances big-O éventuellement différentes si vous êtes d'accord avec la modification du tableau en place. Si vous ne pouvez vraiment pas muter le tableau d'origine, vous feriez quelque chose comme l'extrait ci-dessous, qui ne semble pas être beaucoup plus rapide que votre solution:
a.slice().unshift(0); // Use "slice" to avoid mutating "a".
[Modifier 2]
Pour être complet, la fonction suivante peut être utilisée à la place de l'exemple OP prependArray(...)
pour tirer parti de la unshift(...)
méthode Array :
function prepend(value, array) {
var newArray = array.slice();
newArray.unshift(value);
return newArray;
}
var x = [1, 2, 3];
var y = prepend(0, x);
y; // => [0, 1, 2, 3];
x; // => [1, 2, 3];