Maison > Questions et réponses > le corps du texte
P粉8785105512023-08-24 00:43:53
La réponse acceptée est excellente et fonctionne 90 % du temps.
Cependant, si vous créez une application JS hautes performances et que vous utilisez des tableaux grands/énormes, Array.map(..) créera beaucoup de charge en termes d'utilisation de la mémoire et du processeur car il créera le tableau copie.
Je recommande d'utiliser la boucle classique for :
a = new Array(ARRAY_SIZE); for (var i = 0; i < ARRAY_SIZE; i++) { a[i] = []; } // 或者使用一行代码的替代方案 for (var i = 0, a = []; i < ARRAY_SIZE; a[i++] = []);
J'ai testé six alternatives et obtenu les résultats suivants :
Array.map(), comme ci-dessus (11 fois plus lentement ! ) :
a = new Array(ARRAY_SIZE).fill().map(u => { return []; });
for loop, meilleure option (la plus rapide) :
// 标准的多行方式 a = new Array(ARRAY_SIZE); for (var i = 0; i < ARRAY_SIZE; i++) { a[i] = []; } // 一行语法 for (var i = 0, a = []; i < ARRAY_SIZE; a[i++] = []);
forEach (6 fois plus lent) :
a = new Array(ARRAY_SIZE).fill(); a.forEach((val, i) => { a[i] = []; })
[Mise à jour le 27/08/2020] Ilias Karim a proposé une autre méthode
Array.from (30 fois plus lent ! ) - évidemment pire en termes de performances, malgré la meilleure syntaxe :(
a = Array.from({ length: ARRAY_SIZE }, () => []);
[..Array(..)] (5 fois plus lent ! )
a = [...Array(ARRAY_SIZE)].map(_=>([]))
Array.push(..), classé deuxième en termes de performances (2x plus lent ! )
let a = [], total = ARRAY_SIZE; while(total--) a.push([]);
PS : je l'ai testé sur ce violon.
P粉4615998452023-08-24 00:21:01
Vous pouvez d'abord utiliser n'importe quelle valeur (par exemple undefined
)填充数组,然后您就可以使用map
:
var arr = new Array(2).fill().map(u => ({}));
var arr = new Array(2).fill().map(Object);