返回顶部
首页 > 资讯 > 前端开发 > JavaScript >javascript遍历对象的五种方式实例代码
  • 489
分享到

javascript遍历对象的五种方式实例代码

2024-04-02 19:04:59 489人浏览 安东尼
摘要

目录准备 五种武器 for…in Object.keys Object.getOwnPropertyNames Object.getOwnPropertySymbols Reflec

准备

先来准备一个测试对象obj。

代码清单1


var notEnum = Symbol("继承不可枚举symbol");
var proto = {
    [Symbol("继承可枚举symbol")]: "继承可枚举symbol",
    name: "继承可枚举属性"
};
// 不可枚举属性
Object.defineProperty(proto, "age", {
    value: "继承不可枚举属性"
});
// 不可枚举symbol属性
Object.defineProperty(proto, notEnum, {
    value: "继承不可枚举symbol"
});

var obj = {
    job1: "自有可枚举属性1",
    job2: "自有可枚举属性2",
    [Symbol("自有可枚举symbol")]: "自有可枚举symbol"
};
// 继承
Object.setPrototypeOf(obj, proto);
// 不可枚举属性
Object.defineProperty(obj, "address", {
    value: "自有不可枚举属性"
});
// 不可枚举symbol属性
var ownNotEnum = Symbol("自有不可枚举symbol");
Object.defineProperty(obj, ownNotEnum, {
    value: "自有不可枚举symbol"
});

五种武器

for…in

这个是对象遍历界的老兵了,通过这种方式可以遍历对象自身及继承的所有可枚举属性(不包括Symbol类型)。

代码清单2


for(var attr in obj){
    console.log(attr,"==",obj[attr]);
}

Object.keys

获取对象自身所有可枚举属性(不包括Symbol类型)组成的数组

代码清单3


Object.keys(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});

Object.getOwnPropertyNames

获取对象自身所有类型为非Symbol的属性名称(包括不可枚举)组成的数组

代码清单4


Object.getOwnPropertyNames(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});

Object.getOwnPropertySymbols

获取对象自身所有类型为Symbol的属性名称(包括不可枚举)组成的数组

代码清单5


Object.getOwnPropertySymbols(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});

Reflect.ownKeys

获取一个对象的自身的所有(包括不可枚举的和Symbol类型)的属性名称组成的数组

代码清单6


Reflect.ownKeys(obj).map((attr)=>{
    console.log(attr,"==",obj[attr]);
});

总结

武器库的说明书,根据需要选择合适的武器吧。

api 操作 自身属性 不可枚举属性 继承属性 Symbol属性
for…in 遍历 yes no yes no
Object.keys 返回属性数组 yes no no no
Object.getOwnPropertyNames 返回非Symbol属性数组 yes yes no no
Object.getOwnPropertySymbols 返回Symbol属性数组 yes yes no yes
Reflect.ownKeys 返回属性数组 yes yes no yes

五种武器里最牛的就是Reflect.ownKeys了,无论Symbol还是不可枚举通吃, 简直就是Object.getOwnPropertyNames和Object.getOwnPropertySymbols合体的效果。

扩展

Object.values

获取对象自身所有可枚举属性(不包括Symbol类型)的值组成的数组

代码清单7


Object.values(obj).map((val)=>{
    console.log(val);
});

Object.entries

获取对象自身所有可枚举属性(不包括Symbol类型)的键值对数组

代码清单7


Object.entries(obj).map((val)=>{
    console.log(val);
});

hasOwnProperty

检测一个对象自身属性中是否含有指定的属性,返回boolean

引用自MDN: javascript 并没有保护 hasOwnProperty 属性名,因此某个对象是有可能存在使用这个属性名的属性,所以直接使用原型链上的 hasOwnProperty 方法

代码清单8


for(var attr in obj){
    if(Object.prototype.hasOwnProperty.call(obj,attr)){
        console.log("自有属性::",attr);
    }else{
        console.log("继承属性::",attr);
    }
}

propertyIsEnumerable

检测一个属性在指定的对象中是否可枚举,返回boolean

代码清单9


Reflect.ownKeys(obj).map((attr) => {
    if (Object.prototype.propertyIsEnumerable.call(obj, attr)) {
        console.log("可枚举属性::", attr);
    } else {
        console.log("不可枚举属性::", attr);
    }
});

参考

MDN Object

总结

到此这篇关于javascript遍历对象的五种方式的文章就介绍到这了,更多相关javascript遍历对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: javascript遍历对象的五种方式实例代码

本文链接: https://lsjlt.com/news/155283.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • javascript遍历对象的五种方式实例代码
    目录准备 五种武器 for…in Object.keys Object.getOwnPropertyNames Object.getOwnPropertySymbols Reflec...
    99+
    2024-04-02
  • JavaScript遍历对象的七种方法汇总
    目录前言属性的可枚举性遍历对象for...inObject.keys()Object.values()Object.entries()Object.getOwnPropertyNam...
    99+
    2022-11-13
    JavaScript遍历对象方法 JavaScript遍历对象
  • JavaScript 数组遍历的五种方法
    目录一、for 循环:基础、简单二、forEach() 方法:使用回调函数三、map() 方法:使用回调函数四、for..in 循环:遍历对象和数组五、for…of 循环:遍历对象和...
    99+
    2024-04-02
  • Map集合的四种遍历方式代码示例
    很久以前写的代码,和上一个做比较吧!便于以后查看。import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class TestMap { ...
    99+
    2023-05-30
    map 遍历 ma
  • Java遍历Map的5种方式实例
    目录一、遍历Map的五种方式二、准备条件三、keySet和values方式遍历四、keySet和get(key)方式遍历map五、entrySet方式遍历map六、Iterator方...
    99+
    2023-02-09
    java遍历map map遍历的几种方式 java如何遍历map
  • Java如何遍历Map对象集合(多种方式)6种方式
    Java如何遍历Map对象的4种方法 今天比昨天,更优秀 Map简介 Map是用于保存具有映射关系的数据,保存两组值,key和value,这两组值可以是任何应用类型的数据。Map典型的实现类是H...
    99+
    2023-10-08
    java 开发语言
  • JavaScript遍历json对象数据的方法
    JSON中,有两种结构:对象和数组,对象是没有length这个属性,而数组结构是有的,下面说明一下用遍历方式获取属性值的方法。 获取属性名、属性值 <!DOCTYPE html...
    99+
    2024-04-02
  • javascript对象遍历顺序的示例分析
    这篇文章给大家分享的是有关javascript对象遍历顺序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为JavaScr...
    99+
    2023-06-14
  • JS中轻松遍历对象属性的几种方式
    目录1、自身可枚举属性2、Object.values() 返回属性值3、Object.entries()4、对象属性的顺序1、自身可枚举属性 Object.keys() 方法会返回一...
    99+
    2024-04-02
  • python遍历可迭代对象的实现方法
    目录可迭代(iterable)迭代器(iterator)方法1:使用for循环简单结构遍历方法2:借用 range() 和 len() 函数遍历方法3:借用 iter() 函数遍历方...
    99+
    2023-02-28
    python 遍历可迭代对象 python 可迭代对象
  • list的4种遍历方式(实例讲解)
    废话不多说,直接上代码:import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.hbut.domain.Person;pub...
    99+
    2023-05-31
    list 遍历方式 lis
  • JavaScript中有哪些遍历对象的方法
    这篇文章将为大家详细讲解有关JavaScript中有哪些遍历对象的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,...
    99+
    2023-06-14
  • Javascript对象的循环遍历方法有哪些
    这篇文章主要介绍“Javascript对象的循环遍历方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Javascript对象的循环遍历方法有哪些”文章能帮助...
    99+
    2024-04-02
  • javaScript遍历对象和数组的方法总结
    在日常工作过程中,我们对于javaScript遍历对象、数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用! javaScript遍历对象总结 1、使用Ob...
    99+
    2024-04-02
  • 图解二叉树的三种遍历方式及java实现代码
    二叉树(binary tree)是一颗树,其中每个节点都不能有多于两个的儿子。1.二叉树节点作为图的特殊形式,二叉树的基本组成单元是节点与边;作为数据结构,其基本的组成实体是二叉树节点(binary tree node),而边则对应于节点之...
    99+
    2023-05-31
    java 二叉树 遍历
  • Java中Map循环遍历的五种方法实现
    目录1、创建一个Enum2、开始遍历方法一方法二方法三方法四方法五因为Map比较常用,所以今天来总结下Map取值比较常用的几种遍历方法。 1、创建一个Enum public enum...
    99+
    2024-04-02
  • Java之map的常见用法讲解与五种循环遍历实例代码理解
    目录一、概述:二、Map集合的功能介绍三、map官方总结四、实例五、循环遍历的五种方法一、概述: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 Map接口...
    99+
    2024-04-02
  • python遍历数组的两种方法的代码
    工作过程中,把开发过程中较好的一些内容段备份一下,下面内容是关于python遍历数组的两种方法的内容,希望对小伙伴有用途。 colours = ["red","green","blue"] for colour in colours: ...
    99+
    2023-01-31
    两种 遍历 数组
  • Java实现线程安全单例模式的五种方式的示例代码
    目录饿汉式枚举单例懒汉式DCL 懒汉式静态内部类懒汉单例饿汉式 饿汉式:类加载就会导致该单实例对象被创建 // 问题1:为什么加 final // 问题2:如果实现了序列化接口, 还...
    99+
    2024-04-02
  • 比较JavaScript对象的四种方式
    目录前言引用比较手动比较浅层比较深层比较总结前言 比较JavaScript中的原始值非常简单。只需使用任何一种可用的相等运算符即可,例如严格相等运算符: 'a' === 'c';...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作