object.keys ,5种js遍历对象属性的方法

本文目录

JS Object.keys的使用点


最近工作上遇到一些问题,我这边需要把从后端拿到的一些数据进行绘图。
这里使用的是绘图方式是echarts-for-react,详细使用方法可以见 echarts-for-reac的使用方法 ,根据这个网址里的component props部分,可以知道ReactEchartsCore组件接受的打点的参数是option,话不多说,直接上例子。

我这边需要对目标数据进行object遍历以及array遍历,最后需要得到的是一个数组。

目标数据的数据结构是:

这里我需要对obj这个数据进行一些操作,目标是得到一个这样的数据:

最后我想得到这样的数据类型。

这里从一开始我就没有思考把这个数据结构转变成数组来进行两次map操作来得到自己想要的结果,我一直都是考虑如何遍历这个对象,之后再遍历该对象里某个属性值的数组。

这里用了Object.keys来遍历对象,但是一开始并不明白怎么用,所以我卡住了很久..
这里拿官方的例子来简单说明一下这个方法怎么使用。

这里可以看到,对象使用了Object.keys()方法变成了一个数组,数组里存储着对象的key值,如果你还需要对该对象key值里的数据进行操作,可以用map来遍历这个存储了key值的数组,来达到目的。

比如,我在绘图的时候,需要拿到一个数组类型给options的series属性,对于我刚开始拿出的例子来说,解决办法就是:

哈哈哈我只是记录一下工作,如果这篇文章没有给你们带来帮助的话....就....点个赞再走吧~

可枚举属性和不可枚举属性的区别


js中每个对象的属性都有一个属性enumerable,这个属性true/false决定了这个属性是否可枚举

1、基本数据类型自带的原型属性不可枚举

2、通过Object.defineProperty()方法指定的enumerable为false的属性不可枚举

Object.keys()返回属性key,但不包括不可枚举的属性

Reflect.ownKeys()返回所有属性key

他们两个都不能遍历原型上的属性

for in

for in一般用于遍历对象的属性;

作用于数组的for in除了会遍历数组元素外,还会遍历自定义可枚举的属性,以及原型链上可枚举的属性;

作用于数组的for in的遍历结果是数组的索引,且都为字符串型,不能用于运算;

某些情况下,可能按照随机顺序遍历数组元素;

for of

ES6中添加的循环语法;

for of支持遍历数组、类对象(例如DOM NodeList对象)、字符串、Map对象、Set对象;

for of不支持遍历普通对象,可通过与Object.keys()搭配使用遍历;

for of遍历后的输出结果为数组元素的值;

java遍历对象属性的名称和值


ES6 一共有 5 种方法可以遍历对象的属性。

(1)for...in

for...in 循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)。

(2)Object.keys(obj) ie9

Object.keys 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。

(3)Object.getOwnPropertyNames(obj) ie9

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

(4)Object.getOwnPropertySymbols(obj)

Object.getOwnPropertySymbols 返回一个数组,包含对象自身的所有 Symbol 属性的键名。

(5)Reflect.ownKeys(obj)

Reflect.ownKeys 返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。

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

​ 其中兼容性最好的是for... in来进行遍历,因为我们通常只需要遍历对象自身拥有的属性 所以使用 Object.prototype.hasOwnProperty() 兼容到ie5.5 方法来排除继承的属性

注意:即使属性的值是 null 或 undefined ,只要属性存在, hasOwnProperty 依旧会返回 true 。

​ 如果不在意兼容性问题,用keys方法,搭配for... of来遍历也不错,、

​ for...of是es6引入的用于遍历可迭代对象的语法,相当于python里的for in。

​ js的for...in别扭的地方在于,遍历数组和对象都是返回的key值,遍历数组是下标值。for...of遍历数组会返回每一个值,跟foreach类似的效果,但是对于对象,只支持实现了迭代器的对象。


如何判断一个对象是不是空对象


方法1: for...in
通过for...in遍历属性,如果是空对象返回false,否则返回true
eg:

当对象中k值不存在的话,得到的k为undefined,即false,那么就是空对象。
方法2: Object.keys()
ES6新增的一个Object.keys()方法
该方法会返回一个由给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in.. 循环遍历该对象时返回的顺序一致 。即可以通过返回数组的长度来判断是否为空对象,若为空对象,该数组长度为0。
eg:

Object.keys()官网介绍
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 for-in 循环还会枚举其原型链上的属性)。


以上就是关于object.keys ,5种js遍历对象属性的方法的全部内容,以及object.keys 的相关内容,希望能够帮到您。

上一篇 2022年11月27日15时20分23秒
下一篇 2022年11月27日15时22分54秒

相关推荐

  • 可能性前面搭配什么动词

    在英语中表达“可能性”的常用动词包括“有可能”,“增加可能性”,“减少可能性”,“降低可能性”,“影响可能性”和“提高可能性”。这些动词的具体用法需要根据具体语境来确定,掌握这些搭配方式能够更准确地表达自己的意思,让交流更加顺畅。 以下是一些常用的动词: 有可能:这是最常见的表达方式。例如:“今天下雨了,有可能会影响我们的出行计划。” 增加可能性:这个动词表示某个因素增加了发生某件事情的可能性。例…

    2024年01月21日
    16
  • need have done是虚拟语气吗

    "need have done"这个短语在英语中既可以表示实际语气,也可以表示虚拟语气,具体取决于它所处的语境。例如,它可以表示过去需要做的事情,也可以表示现在或将来需要做的事情,这些都属于实际语气。然而,当它用于表示如果情况不同,就不会发生某事时,它就是虚拟语气。 首先,need have done可以用来表示过去发生的事情,例如:I need to have finished my work …

    2024年01月22日
    16
  • 复合不定代词做主语例句

    复合不定代词是英语语法中的一部分,可以代替不确定的人或物,并在句子中作为主语、宾语、表语、定语等。例如,"Somebody needs to clean the kitchen before dinner","Does anybody want to go to the movies tonight?","No one can predict the future"等。 1. somebody/s…

    2024年01月21日
    16
  • 可数名词复数的用法

    英语中的可数名词复数形式主要有四种规则:大部分名词在词尾加上-s,以-s, -x, -z, -sh, -ch等发音结尾的名词在词尾加上-es,以辅音字母+y结尾的名词将y变为i并加上-es,以及一些特殊情况需要记忆,如man变为men,child变为children等。 加-s 大部分可数名词的复数形式都是在词尾加上-s。比如: cat(猫)-> cats(猫们) book(书)-> books(…

    2024年01月22日
    16
  • 现在进行时与现在完成时的区别

    英语语法中,现在进行时和现在完成时的主要区别在于强调的时间点不同。现在进行时表示正在发生的动作或状态,通常用“be”动词加上现在分词来构成,强调的是现在正在进行的事情。而现在完成时表示过去发生的动作对现在的影响或结果,通常用“have/has”加上过去分词来构成,强调的是过去经历的事情对当前的影响或结果。 现在进行时 现在进行时表示正在发生的动作或状态,通常用“be”动词加上现在分词来构成。例如:…

    2024年01月22日
    16
  • if only三种虚拟语气

    "if only"是英语虚拟语气中的一种常见表达方式,用于表达遗憾和后悔。第一种虚拟语气用于表达对过去事情的遗憾,语法结构是"If only + 过去完成时";第二种虚拟语气用于表达对现在情况的遗憾,语法结构是"If only + 过去式";第三种虚拟语气用于表达对将来情况的遗憾,语法结构是"If only + 过去完成时"。 第一种虚拟语气 第一种虚拟语气是用于表达对过去事情的遗憾和后悔。它的语…

    2024年01月22日
    16
  • 祈使句和动词做主语怎么区分

    祈使句和动词做主语的句子在英语语法中有所不同。祈使句通常以动词开头,没有主语,用于发出命令、请求或建议。而动词做主语的句子中,动词本身就是主语,通常表达一种普遍的事实或观点。区分这两种句型的关键在于观察句子是否有主语,以及句子的语气。 祈使句 祈使句是用来发出命令、请求或建议的句子,通常以动词开头,没有主语。例如: Sit down and relax. Come here and help me…

    2024年01月21日
    16
  • 祈使句默认的主语是

    祈使句默认的主语是“你”,用于表达请求、建议、命令等。然而,在特定情况下,主语可能会发生变化,例如,“Let's go for a walk.”中的主语是“We”,“May the force be with you.”中的主语是“the force”。因此,理解祈使句需要结合上下文。 例如,句子“Close the door.”,我们可以理解为“你关上门。”。在这个例子中,虽然“你”没有明确地出…

    2024年01月22日
    16