JS对象遍历的详细阐述

一、Object.keys()

Object.keys()方法可以获取对象的所有键(属性名),返回一个由键名组成的数组。可以使用for循环或Array.prototype.forEach()方法遍历此数组,然后通过键名获取对象的值。

  
    const obj = {a:1, b:2, c:3};

    const keysArray = Object.keys(obj);

    for(let i = 0; i < keysArray.length; i++){
      const key = keysArray[i];
      const value = obj[key];
      console.log(key, value);
    }
  

或者使用Array.prototype.forEach()方法

  
    const obj = {a:1, b:2, c:3};

    const keysArray = Object.keys(obj);

    keysArray.forEach((key) => {
      const value = obj[key];
      console.log(key, value);
    });
  

二、for…in循环

for…in循环可以遍历对象的所有可枚举属性,包括继承而来的属性,但是不包括Symbol类型的属性和不可枚举属性。不建议使用for…in循环遍历数组,因为数组也可以看做是一个对象,它的索引会被当做属性名。

  
    const obj = {a:1, b:2, c:3};

    for(let key in obj){
      const value = obj[key];
      console.log(key, value);
    }
  

三、使用Reflect.ownKeys()

Reflect.ownKeys()方法返回一个数组,包含对象自身所有属性名,不管属性名是Symbol或者字符串。

  
    const obj = {a:1, b:2, [Symbol()]: 3};

    const keysArray = Reflect.ownKeys(obj);

    keysArray.forEach((key) => {
      const value = obj[key];
      console.log(key, value);
    });
  

四、使用Object.entries()

Object.entries()方法返回一个键值对数组,包含对象自身所有可枚举属性(不包括继承而来的属性),其中每个键值对的键为属性名,值为属性值。

  
    const obj = {a:1, b:2, c:3};

    const entriesArray = Object.entries(obj);

    entriesArray.forEach((entry) => {
      const key = entry[0];
      const value = entry[1];
      console.log(key, value);
    });
  

五、使用Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法返回一个数组,包含对象自身所有属性名,包括不可枚举属性。

  
    const obj = {a:1, b:2, [Symbol()]: 3};

    const keysArray = Object.getOwnPropertyNames(obj);

    keysArray.forEach((key) => {
      const value = obj[key];
      console.log(key, value);
    });
  

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/231831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-11 01:07
下一篇 2024-12-11 01:07

相关推荐

发表回复

登录后才能评论