首页 > 其他分享 >JS 对象的遍历

JS 对象的遍历

时间:2024-07-21 16:18:32浏览次数:7  
标签:遍历 console log 对象 Object value JS dict key


定义一个对象,对象的键包含所有数据类型

const SymbolKey = Symbol('a')
const dict = {
  [66]: 66,
  "string": 'string',
  [true]: true,
  [undefined]: undefined,
  [null]: null,
  [BigInt(123)]: BigInt(123),
  [function () { console.log("hello") }]: 'function value',
  [{}]: 'object value',
  [[]]: 'array value',
  [SymbolKey]: 'symbol value',
  __proto__: Object.prototype,
}

使用常规循环循环方法

for (let key in dict) {
  console.log("key:", key, " value:", dict[key])
}

Object.keys(dict).forEach(key => {
  console.log("key:", key, " value:", dict[key])
});

Object.entries(dict).forEach(([key, value]) => {
  console.log("key:", key, " value:", value);
});

Object.getOwnPropertyNames(dict).forEach(key => {
  console.log("key:", key, " value:", dict[key])
});

打印结果:

key: 66  value: 66
key: 123  value: 123n
key: string  value: string
key: true  value: true
key: undefined  value: symbol value
key: null  value: null
key: function () { console.log("hello") }  value: function value
key: [object Object]  value: object value
key:   value: array value

可以看出除了对象的原型对象和Symbol其他数据类型都可以打印出来

// 获取Symbol
const symbolKey = Object.getOwnPropertySymbols(dict)
console.log(symbolKey, dict[symbolKey[0]]);
// 获取 __proto__
const protoKey = Object.getPrototypeOf(dict)
console.log(protoKey, dict.__proto__);

打印结果:

[ Symbol(a) ] symbol value
[Object: null prototype] {} [Object: null prototype] {}

遍历对象全部属性:

// 遍历对象可枚举和不可枚举属性

const getObjectKeys = (obj) => {
  let keys = Object.keys(obj)
  const symbolKeys = Object.getOwnPropertySymbols(dict)
  keys.push(...symbolKeys)
  const protoKey = Object.getPrototypeOf(dict)
  keys.push(protoKey)
  return keys
}
console.log(getObjectKeys(dict));

打印结果:

[
  '66',
  '123',
  'string',
  'true',
  'undefined',
  'null',
  'function () { console.log("hello") }',
  '[object Object]',
  '',
  Symbol(a),
  [Object: null prototype] {}
]

标签:遍历,console,log,对象,Object,value,JS,dict,key
From: https://www.cnblogs.com/zhuping580/p/18314605

相关文章

  • vue3 Promise处理异步操作的对象
    Promise是JavaScript中用于处理异步操作的一种对象。它代表了一个异步操作的最终完成(或失败)及其结果值。在处理异步操作时,Promise提供了一种更干净、更可读的方式来管理回调函数。Promise的状态一个Promise对象有三种状态:Pending(进行中):初始状态,操作尚未完成。Fulfille......
  • 389.权志龙明星主题网页 大学生期末大作业 Web前端网页制作 html5+css+js
    欢迎光临仙女的网页世界!这里有Web前端网页制作的各行各业的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这么好的知识学习、技术交流的平台,让我们在这里相遇,小伙伴们,来吧,让我们一起开启Web前端网页制作的奇妙之旅!说起Web前端,大学开启这扇技术之门以来,一切起始于兴趣爱好和......
  • 04 ES6中对象的简写
    在ES6中,对象字面量的书写方式进行了一些简化,使得对象的创建更加简洁。以下是ES6中对象简写的几种形式:属性值缩写:当对象的属性名和属性值的变量名相同时,可以省略属性值,只写属性名。//ES5constname='Alice';constage=25;constperson={name:name,a......
  • 在.NET Web API设置响应输出Json数据格式常用的两种方式
    前言在ASP.NETCoreWebAPI中设置响应输出Json数据格式常用以下两种方式:可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式。注意:本文示例使用的是新的MinimalAPI模式。JSON序列化和反序列化库System.Text......
  • tensorflowjs_converter 实用程序向导致错误的变量名称添加后缀
    我正在尝试使用tensorflowjs_converter将我在python中训练的模型(使用tensorflow)转换为JSON层格式,以便我可以在网络上运行它。我安装了最新版本,并转换了测试模型。对于这个模型,它按预期提供了model.json和.bin文件,但是当我在网络上运行它时,我遇到了错误:Unc......
  • [JS] 一次逆向
    开始此文章为个人学习研究,请勿用于非法用途。背景是我是小鹤音形用户,常常忘记一个字怎么打,就需要查形;而windows软件的查形太麻烦,网页查询更麻烦,所以我想写脚本,配合我的meow-tool工具快捷的查形。但是显然,网站的接口是加密的,需要添加sign参数的请求体中;所以首先需要逆向出sign......
  • mockjs 使用案例
    案例importMock,{Random}from"mockjs";constresData=Mock.mock({ //key中min-max代表随机生成5到10条数组数据 'list|5-10':[{ //value@id可以随机生成id 'id':'@id', 'name':'@name', 'image'......
  • DRF如何反序列化json?
    我使用React作为前端,django作为后端。我使用fetchAPI向服务器发送POST请求。数据通过JSON.stringify()传递。该请求将被Django中的视图拦截,数据可在视图函数的请求参数中获取。至少这是我所理解的。现在,当我访问request.body时,我惊讶地得到了一个字典。......
  • 可包装对象
    std::function模板类是一个通用的可调用对象的包装器,用简单的、统一的方式处理可调用对象。#include<iostream>#include<functional>usingnamespacestd;voidshow(intage,conststring&message){ cout<<"age"<<age<<"message"<<......
  • 动态规划-1:穷举遍历->map缓存->取消递归
    importjava.util.HashMap;importjava.util.Map;publicclassDynamicProgrammingAlgorithm{publicstaticvoidmain(String[]args){//比如要求一个数组的最长递增子序列的长度//比如是[1,4,2,5,3],那么[1,2,5],或者[1,2,3]都是最长递增子序......