Table des matières
Note version
Maison interface Web js tutoriel Comment initialiser rapidement un tableau avec js

Comment initialiser rapidement un tableau avec js

Sep 09, 2017 am 10:43 AM
javascript 初始化 快速

balise (séparée par des espaces) : call apply


Note version

Lors de l'écriture de code, il est généralement nécessaire d'initialiser rapidement un tableau. Par exemple, nous avons besoin d'un <. similaire celui de matlab>Fonction, si ici nous devons générer un tableau de 0 à 23 pour représenter 24 heures par jour. zerosL'approche la plus basique est la suivante :

function(){
    let hours = [];    
    for(let k = 0; k < 24; k++ )
    hours.push(k);    
    return hours;
}
Copier après la connexion
Réfléchissons à la manière de la mettre en œuvre de manière plus élégante.

Pensez à utiliser la méthode
+ new Array(24) pour y parvenir. mapLe code est le suivant :

Array(24).map((_, h) => h);
Copier après la connexion
Notez que le deuxième paramètre de

ici est l'index, qui est rarement utilisé ici, l'index est utilisé comme valeur numérique. mapLes résultats ne sont pas à la hauteur des attentes, pourquoi ?
Après une brève recherche, j'ai découvert que cela était dû à la logique des tableaux clairsemés en js.
Jetons d'abord un coup d'œil au code suivant :

let a = [];
a[1000] = 2;
console.log(a.length);// 1000a.forEach(x => console.log("hello"));// only one "hello"
Copier après la connexion
La logique de traitement de js consiste à traiter les "postes vacants" pour les postes qui ne sont pas activement attribués à des valeurs pour ces "postes vacants" qui sont inconnus. , l'itérateur ne l'oubliera pas, le but principal de cela est d'éviter les bogues causés par des opérations d'affectation déraisonnables.

Supposons qu'une telle logique n'existe pas et que nous écrivions
, ce qui amènera le système à créer un très grand tableau, mais en réalité ne stockera rien. new Array(Date.now()) Nous pouvons simplement comprendre ce que
fait comme le processus suivant : new Array(len)

function(len){
    let r = [];
    r.length = len;    
    return r;
Copier après la connexion
C'est pourquoi appeler

ou new Array(len) sur map est incompatible avec les attentes. forEachComment résoudre ce problème ? En plus d'utiliser le formulaire de
, nous pouvons également utiliser la méthode d'écriture de new Array(len) pour initialiser le tableau, mais écrire de cette façon n'atteindra pas notre objectif d'écrire le tableau initialisé. . new Array(1,2,3)À ce moment-là, nous avons pensé à
. Le deuxième paramètre de cette fonction se trouve être un tableau, nous avons donc écrit le code suivant. apply

// 借用apply
Array.apply(null, Array(24)).map((_, h) => h);
// [0, 1, ..., 24]
Copier après la connexion
Nous avons obtenu les résultats que nous espérions. Cela signifie que

est traité comme 24 valeurs lorsqu'il est utilisé comme paramètre dans Array(24), car cela garantit que la longueur finale du tableau est de 24. applyDans ce cas, bien sûr, nous pouvons également utiliser la fonction sœur de
apply. call

// 借用call
Array.call(null, ...Array(24)).map((_, h) => h);
// [0, 1... 23]
Copier après la connexion
Cela confirme également une chose,

la déstructuration obtiendra Array(len) paramètres au lieu d'un paramètre. Bien sûr, len doit être utilisé dans un environnement qui prend en charge l'opérateur de déstructuration. call

Après nous être familiarisés avec les principes de

et call, nous pouvons écrire en outre le code suivant : apply

// Array本身
Array(...Array(24)).map((_, h) => h);
// [0, 1, ..., 24]
Copier après la connexion
Cette forme est assez élégante.

De plus, dans
, ES6 fournit une nouvelle méthode Array, qui peut être utilisée pour remplir ces bits « vacants » afin de garantir que les opérations ultérieures puissent se dérouler sans problème. fillLe code spécifique est le suivant :

// 推荐
Array(24).fill(null).map((_, h) => h);
Copier après la connexion
Maintenant, la dernière méthode d'écriture est également recommandée, cette méthode est aussi la plus intuitive.

Cependant, vous devez faire attention à l'utilisation de la méthode
, et vous devriez essayer d'éviter le remplissage aveugle, car cela provoquerait les bugs mentionnés ci-dessus que la logique "vide" de js est conçue pour éviter. fillSi vous êtes intéressé, vous pouvez essayer le code suivant :

// no-fillconsole.time("no-fill");let t = Array(5e7);console.timeEnd("no-fill");// fillconsole.time("fill");let q = Array(5e7).fill(null);console.timeEnd("fill");// => no-fill: 0.240ms// => fill: 3247.921ms
Copier après la connexion
Si vous l'essayez dans le navigateur, le navigateur ne répondra pratiquement pas. Je n'ai pas défini une valeur plus grande pour éviter de recevoir un non. résultats. En supposant qu'un int occupe 4 octets de mémoire, ce remplissage occupera 200 Mo de mémoire et devra être bouclé 50 millions de fois. Cela occupera inévitablement une grande quantité de CPU et de mémoire, ce qui n'est absolument pas autorisé dans les js monothread.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que faire si la routine d'initialisation de la bibliothèque de liens dynamiques échoue Que faire si la routine d'initialisation de la bibliothèque de liens dynamiques échoue Dec 29, 2023 am 10:30 AM

Solution : 1. Réinstallez l'application ; 2. Réparez ou réinstallez la DLL ; 3. Restauration du système ou récupération du point de contrôle ; 4. Analysez à l'aide du vérificateur de fichiers système (SFC) ; Consultez la documentation officielle ou les forums ; 8. Envisagez un logiciel de sécurité ; 9. Vérifiez l'observateur d'événements ; 10. Demandez l'aide d'un expert, etc.

Comment initialiser l'ordinateur dans Win7 Comment initialiser l'ordinateur dans Win7 Jan 07, 2024 am 11:53 AM

Le système win7 est un très excellent système hautes performances Lors de l'utilisation continue de win7, de nombreux amis demandent comment initialiser l'ordinateur dans win7 ! Aujourd'hui, l'éditeur vous expliquera comment restaurer les paramètres d'usine d'un ordinateur win7. Informations connexes sur la façon d'initialiser l'ordinateur dans Win7 : Instructions détaillées avec images et texte Étapes : 1. Ouvrez le « Menu Démarrer » et entrez. 2. Cliquez pour entrer les paramètres en bas du côté gauche. 3. Dans l'interface des paramètres de mise à jour et de récupération Win10, sélectionnez. 4. Cliquez ci-dessous « Supprimer tout le contenu et réinstaller Windows ». 5. Vous pouvez voir les paramètres « Initialisation » suivants, puis cliquez sur. 6. Entrez l'option de paramètre « Votre ordinateur dispose de plusieurs lecteurs ». Il existe deux options ici, que vous pouvez choisir en fonction de la situation.

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel Dec 17, 2023 pm 05:30 PM

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comprendre les différences et les comparaisons entre SpringBoot et SpringMVC Comprendre les différences et les comparaisons entre SpringBoot et SpringMVC Dec 29, 2023 am 09:20 AM

Comparez SpringBoot et SpringMVC et comprenez leurs différences Avec le développement continu du développement Java, le framework Spring est devenu le premier choix pour de nombreux développeurs et entreprises. Dans l'écosystème Spring, SpringBoot et SpringMVC sont deux composants très importants. Bien qu'ils soient tous deux basés sur le framework Spring, il existe certaines différences dans les fonctions et l'utilisation. Cet article se concentrera sur la comparaison de SpringBoot et Spring

Réparer Impossible d'initialiser l'erreur du système graphique sur PC Réparer Impossible d'initialiser l'erreur du système graphique sur PC Mar 08, 2024 am 09:55 AM

De nombreux joueurs ont rencontré le problème frustrant de l’échec du jeu à initialiser le système graphique. Cet article examinera les raisons courantes de ce problème et trouvera des solutions simples mais efficaces qui vous permettront de revenir sur le plateau et de battre le niveau en un rien de temps. Donc, si vous recevez un message d'erreur Impossible d'initialiser le système graphique dans Rollercoaster Tycoon, Assassin's Creed, Tony Hawk's Pro Skater, etc., suivez les solutions mentionnées dans cet article. Erreur d'initialisation Impossible d'initialiser le système graphique. Les cartes graphiques ne sont pas prises en charge. Corriger le message d'erreur Impossible d'initialiser le système graphique Pour résoudre l'erreur Impossible d'initialiser le système graphique dans des jeux comme Rollercoaster Tycoon, Assassin's Creed, Tony Hawk's Pro Skater, etc., vous pouvez essayer les solutions de contournement suivantes : Mettez à jour le pilote de votre carte graphique dans le mode de compatibilité

Comment réinitialiser les paramètres réseau Win7 Comment réinitialiser les paramètres réseau Win7 Dec 26, 2023 pm 06:51 PM

Le système win7 est un très excellent système hautes performances. Récemment, de nombreux amis du système win7 cherchent comment initialiser les paramètres réseau dans win7. Aujourd'hui, l'éditeur vous apporte les détails de l'initialisation du réseau informatique win7. au tutoriel. Tutoriel détaillé sur la façon d'initialiser les paramètres réseau dans Win7 : Étapes graphiques : 1. Cliquez sur le menu « Démarrer », recherchez et ouvrez le « Panneau de configuration », puis cliquez sur « Centre Réseau et partage ». 2. Ensuite, recherchez et cliquez sur « Modifier le périphérique adaptateur ». 3. Ensuite, dans la fenêtre qui s'ouvre, cliquez avec le bouton droit sur « Connexion au réseau local » puis cliquez sur « Propriétés ». 4. Après l'avoir ouvert, recherchez « Version du protocole Internet (TCP/IPv4) » et doublez

Quelle est la différence dans le chemin « Poste de travail » dans Win11 ? Un moyen rapide de le trouver ! Quelle est la différence dans le chemin « Poste de travail » dans Win11 ? Un moyen rapide de le trouver ! Mar 29, 2024 pm 12:33 PM

Quelle est la différence dans le chemin « Poste de travail » dans Win11 ? Un moyen rapide de le trouver ! Comme le système Windows est constamment mis à jour, le dernier système Windows 11 apporte également de nouvelles modifications et fonctions. L'un des problèmes courants est que les utilisateurs ne peuvent pas trouver le chemin d'accès à « Poste de travail » dans le système Win11. Il s'agissait généralement d'une opération simple dans les systèmes Windows précédents. Cet article présentera en quoi les chemins de « Poste de travail » sont différents dans le système Win11 et comment les trouver rapidement. Sous Windows1

Guide de création de sites Web WordPress : créez rapidement un site Web personnel Guide de création de sites Web WordPress : créez rapidement un site Web personnel Mar 04, 2024 pm 04:39 PM

Guide de création de sites Web WordPress : créez rapidement un site Web personnel Avec l'avènement de l'ère numérique, avoir un site Web personnel est devenu à la mode et nécessaire. En tant qu’outil de création de sites Web le plus populaire, WordPress rend la création d’un site Web personnel plus facile et plus pratique. Cet article vous fournira un guide pour créer rapidement un site Web personnel, y compris des exemples de code spécifiques. J'espère qu'il pourra aider les amis qui souhaitent avoir leur propre site Web. Étape 1 : Achetez un nom de domaine et un hébergement Avant de commencer à créer un site Web personnel, vous devez d'abord acheter le vôtre.

See all articles