Table des matières
1. Méthode de traversée d'objet
二、对象属性遍历次序规则
三、遍历方法详解
3. Object.getOwnPropertyNames()
3. La méthode Object.getOwnPropertyNames()
Maison interface Web js tutoriel Explication détaillée de 5 méthodes de parcours de boucle d'objets Javascript

Explication détaillée de 5 méthodes de parcours de boucle d'objets Javascript

Aug 04, 2022 pm 05:28 PM
javascript 对象 循环遍历

Comment parcourir des objets Javascript ? L'article suivant présentera en détail cinq méthodes de traversée d'objets JS et comparera brièvement ces cinq méthodes. J'espère qu'il vous sera utile !

Explication détaillée de 5 méthodes de parcours de boucle d'objets Javascript

1. Méthode de traversée d'objet

  • pour ... dansfor ... in

  • Object.keys(), Object.values(), Object.entries()

  • Object.getOwnPropertyNames()

  • Object.getOwnPropertySymbols()

  • Reflect.ownKeys()

二、对象属性遍历次序规则

以上5种方法遍历对象的属性时都遵守同样的属性遍历次序规则

  • 属性名为数值,按照数值升序排序

  • 属性名为字符串,按照生成时间升序排序

  • 属性名为Symbol,按照生成时间升序排序

三、遍历方法详解

1. for in

for…in 主要用于循环对象属性。循环中的代码每执行一次,就会对对象的属性进行一次操作。其语法如下:

for (var in object) {
 执行的代码块
}
Copier après la connexion

其中两个参数:

  • var:必须。指定的变量可以是数组元素,也可以是对象的属性。

  • object:必须。指定迭代的的对象。

var obj = {a: 1, b: 2, c: 3}; 
 
for (var i in obj) { 
    console.log('键名:', i); 
    console.log('键值:', obj[i]); 
}
Copier après la connexion

输出结果:

键名:a
键值:1
键名:b
键值:2
键名:c
键值:3
Copier après la connexion

注意:

  • for in 方法不仅会遍历当前的对象所有的可枚举属性,还会遍历其原型链上的属性。

2. Object.keys()、Object.values()、Object.entries()

这三个方法都用来遍历对象,它会返回一个由给定对象的自身可枚举属性(不含继承的和Symbol属性)组成的数组,数组元素的排列顺序和正常循环遍历该对象时返回的顺序一致,这个三个元素返回的值分别如下:

  • Object.keys():返回包含对象键名的数组;

  • Object.values():返回包含对象键值的数组;

  • Object.entries():返回包含对象键名和键值的数组。

let obj = { 
  id: 1, 
  name: 'hello', 
  age: 18 
};
console.log(Object.keys(obj));   // 输出结果: ['id', 'name', 'age']
console.log(Object.values(obj)); // 输出结果: [1, 'hello', 18]
console.log(Object.entries(obj));   // 输出结果: [['id', 1], ['name', 'hello'], ['age', 18]
Copier après la connexion

注意

  • Object.keys()方法返回的数组中的值都是字符串,也就是说不是字符串的key值会转化为字符串。

  • 结果数组中的属性值都是对象本身可枚举的属性,不包括继承来的属性。

3. Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法与Object.keys()类似,也是接受一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名。但它能返回不可枚举的属性。

let a = ['Hello', 'World'];
 
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]
Copier après la connexion

这两个方法都可以用来计算对象中属性的个数:

var obj = { 0: "a", 1: "b", 2: "c"};
Object.getOwnPropertyNames(obj) // ["0", "1", "2"]
Object.keys(obj).length // 3
Object.getOwnPropertyNames(obj).length // 3
Copier après la connexion

4. Object.getOwnPropertySymbols()

Object.getOwnPropertySymbols() 方法返回对象自身的 Symbol 属性组成的数组,不包括字符串属性:

let obj = {a: 1}
 
// 给对象添加一个不可枚举的 Symbol 属性
Object.defineProperties(obj, {
 [Symbol('baz')]: {
  value: 'Symbol baz',
  enumerable: false
 }
})
 
// 给对象添加一个可枚举的 Symbol 属性
obj[Symbol('foo')] = 'Symbol foo'
 
Object.getOwnPropertySymbols(obj).forEach((key) => {
 console.log(obj[key]) 
})
 
// 输出结果:Symbol baz Symbol foo
Copier après la connexion

5. Reflect.ownKeys()

Reflect.ownKeys() 返回一个数组,包含对象自身的所有属性。它和Object.keys()类似,Object.keys()返回属性key,但不包括不可枚举的属性,而Reflect.ownKeys()会返回所有属性key:

var obj = {
 a: 1,
 b: 2
}
Object.defineProperty(obj, 'method', {
 value: function () {
     alert("Non enumerable property")
 },
 enumerable: false
})
 
console.log(Object.keys(obj))
// ["a", "b"]
console.log(Reflect.ownKeys(obj))
// ["a", "b", "method"]
Copier après la connexion

注意:

  • Object.keys() :相当于返回对象属性数组;

  • Reflect.ownKeys() :相当于 Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj)

Object.keys(), Object.values(), Object.entries( )

Object.getOwnPropertyNames()obéissent toutes aux mêmes règles d'ordre de parcours d'attribut lors du parcours des propriétés d'un objetvaleurvaleurChaîneTemps de générationSymboleTemps de générationfor…in est. principalement utilisé pour boucler les propriétés des objets. Chaque fois que le code de la boucle est exécuté, les propriétés de l'objet seront exploitées. La syntaxe est la suivante : Deux paramètres : objet : obligatoire. Spécifie l’objet sur lequel effectuer une itération. Résultat de sortie : Remarque :
Utilisez les trois méthodes pour parcourir l'objet, il renverra un tableau composé des propres propriétés énumérables de l'objet donné (à l'exclusion des propriétés héritées et Symbol). L'ordre des éléments du tableau est cohérent avec l'ordre renvoyé lorsque l'objet est parcouru normalement. par chaque élément sont les suivants : Object.values() : renvoie un tableau contenant la valeur de la clé de l'objet ; Object.entries() : renvoie un tableau contenant les noms de clés d'objet et les valeurs de clés. NoteLes valeurs du tableau renvoyées par la méthode Object.keys() sont toutes des chaînes, ce qui signifie que les valeurs de clé qui ne sont pas des chaînes seront converties en chaînes. Les valeurs d'attribut dans le tableau de résultats sont tous des de l'objet lui-même, à l'exclusion des attributs hérités.

3. La méthode Object.getOwnPropertyNames()

Object.getOwnPropertyNames() est similaire à Object.keys() et accepte également un object En paramètre, renvoie un tableau contenant tous les noms de propriétés de l'objet lui-même. Mais il peut renvoyer des propriétés
Object.getOwnPropertySymbols() Reflect.ownKeys() 2. Règles d'ordre de parcours des attributs d'objet Les cinq méthodes ci-dessus
Le nom de l'attribut est , selon la Trier par ordre croissant Le nom de l'attribut est , Trier par Par ordre croissant
Le nom de l'attribut est , Trier par Ordre croissant
3. Explication détaillée de la méthode de traversée 1 for in
rrreee
    var : obligatoire. La variable spécifiée peut être un élément de tableau ou une propriété d'objet.
    rrreeerrreee
    for in méthode parcourra non seulement toutes les propriétés énumérables de l'objet actuel, mais parcourra également les propriétés de sa chaîne de prototypes.
    2. Object.keys(), Object.values(), Object.entries()
      Object.keys() : renvoie un tableau contenant le nom de la clé de l'objet ;
      rrreee

      attributs énumérables
      non énumérables.

      rrreeeLes deux méthodes peuvent être utilisées pour compter le nombre de propriétés dans un objet : rrreee

      4.Object.getOwnPropertySymbols()🎜🎜 🎜 La méthode Object.getOwnPropertySymbols() renvoie un tableau de propriétés Symbol de l'objet lui-même, à l'exclusion des propriétés de chaîne : 🎜rrreee🎜🎜5. ()🎜🎜🎜Reflect.ownKeys() renvoie un tableau contenant toutes les propriétés de l'objet lui-même. C'est similaire à Object.keys(). Object.keys() renvoie les clés de propriété, mais n'inclut pas les propriétés non énumérables, tandis que Reflect.ownKeys() renvoie toutes les clés de propriété : 🎜rrreee🎜Remarque : 🎜
        🎜🎜 Object.keys() : équivalent au retour d'un tableau de propriétés d'objet ; 🎜🎜🎜🎜Reflect.ownKeys() : équivalent à Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj). 🎜🎜 🎜🎜4. Comparaison des méthodes de traversée🎜🎜🎜🎜🎜Méthode de traversée🎜🎜Auto-propriétés🎜🎜Propriétés héritées🎜🎜Propriétés de base de traversée🎜🎜Chaîne de prototypes de traversée🎜🎜Propriétés de traversée non énumérables🎜 🎜Type de symbole🎜🎜🎜 🎜🎜🎜pour ... en🎜🎜self🎜🎜hérite🎜🎜oui🎜🎜oui🎜🎜non🎜🎜ne contient pas🎜🎜🎜🎜Object.keys()🎜🎜self🎜🎜🎜🎜 🎜oui🎜🎜non 🎜 🎜Non🎜🎜Non Contient 🎜🎜🎜🎜Object.getOwnPropertyNames()🎜🎜self🎜🎜🎜🎜🎜 est 🎜🎜 non 🎜🎜 est 🎜🎜 ne contient pas 🎜🎜🎜 🎜Object.getOwnPropertySymbols() 🎜🎜Self🎜🎜🎜 🎜🎜Non🎜🎜Non 🎜🎜 est 🎜🎜 Toutes les propriétés des symboles 🎜🎜🎜🎜Reflect.ownKeys()🎜🎜 lui-même 🎜🎜🎜🎜🎜 est 🎜🎜 non 🎜🎜 est 🎜 🎜 contient 🎜🎜🎜🎜 🎜[Recommandations associées : 🎜Tutoriel d'apprentissage javascript🎜🎜 】🎜🎜

      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.

      Article chaud

      R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
      3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
      R.E.P.O. Meilleurs paramètres graphiques
      3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
      R.E.P.O. Comment réparer l'audio si vous n'entendez personne
      3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
      WWE 2K25: Comment déverrouiller tout dans Myrise
      4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

      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)

      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

      Comment convertir le tableau de résultats d'une requête MySQL en objet ? Comment convertir le tableau de résultats d'une requête MySQL en objet ? Apr 29, 2024 pm 01:09 PM

      Voici comment convertir un tableau de résultats de requête MySQL en objet : Créez un tableau d'objets vide. Parcourez le tableau résultant et créez un nouvel objet pour chaque ligne. Utilisez une boucle foreach pour attribuer les paires clé-valeur de chaque ligne aux propriétés correspondantes du nouvel objet. Ajoute un nouvel objet au tableau d'objets. Fermez la connexion à la base de données.

      JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel Dec 17, 2023 pm 05:13 PM

      JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

      Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

      Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

      Quelle est la différence entre les tableaux et les objets en PHP ? Quelle est la différence entre les tableaux et les objets en PHP ? Apr 29, 2024 pm 02:39 PM

      En PHP, un tableau est une séquence ordonnée et les éléments sont accessibles par index ; un objet est une entité avec des propriétés et des méthodes, créée via le mot-clé new. L'accès au tableau se fait via l'index, l'accès aux objets se fait via les propriétés/méthodes. Les valeurs du tableau sont transmises et les références d'objet sont transmises.

      Qu'est-ce que l'objet Request en PHP ? Qu'est-ce que l'objet Request en PHP ? Feb 27, 2024 pm 09:06 PM

      L'objet Request en PHP est un objet utilisé pour gérer les requêtes HTTP envoyées par le client au serveur. Grâce à l'objet Request, nous pouvons obtenir les informations de demande du client, telles que la méthode de demande, les informations d'en-tête de demande, les paramètres de demande, etc., afin de traiter et de répondre à la demande. En PHP, vous pouvez utiliser des variables globales telles que $_REQUEST, $_GET, $_POST, etc. pour obtenir les informations demandées, mais ces variables ne sont pas des objets, mais des tableaux. Afin de traiter les informations demandées de manière plus flexible et plus pratique, vous pouvez

      Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

      Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

      À quoi dois-je faire attention lorsqu'une fonction C++ renvoie un objet ? À quoi dois-je faire attention lorsqu'une fonction C++ renvoie un objet ? Apr 19, 2024 pm 12:15 PM

      En C++, il y a trois points à noter lorsqu'une fonction renvoie un objet : Le cycle de vie de l'objet est géré par l'appelant pour éviter les fuites mémoire. Évitez les pointeurs suspendus et assurez-vous que l'objet reste valide après le retour de la fonction en allouant dynamiquement de la mémoire ou en renvoyant l'objet lui-même. Le compilateur peut optimiser la génération de copie de l'objet renvoyé pour améliorer les performances, mais si l'objet est transmis par sémantique de valeur, aucune génération de copie n'est requise.

      See all articles