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秒

相关推荐

  • 补语和宾语的位置

    在英语中,补语和宾语的位置是非常重要的语法知识点。在句子中,补语和宾语通常都是名词、形容词或者副词。宾语是动词的直接受益者,而补语则是对主语或宾语进行补充说明的成分。 宾语的位置 在英语句子中,宾语通常出现在动词后面。比如,在句子“Tom ate an apple”中,“an apple”就是宾语,出现在动词“ate”的后面。然而,有些动词可以带两个宾语,一个直接宾语和一个间接宾语。这时,间接宾语通常会出现在直接宾语的前面。比如,在句子“I gave my friend a book”中,“my friend”是间接宾语,出现在直接宾语“a book”的前面。 补语的位置 补语的位置相对复杂一…

    英语知识 2023年06月04日
    11
  • 告诉自己要坚强的句子

    学习英语并不是一件容易的事情,但是我们可以通过一些句子来激励自己,让自己更加坚强,以下是一些可以帮助你坚持学习英语的句子: 不要停下来,只有前进。 这句话告诉我们,不要因为困难而放弃,只有不停的前进,才能到达目标。即使你觉得英语学习很难,也要坚持下去,只有这样才能取得成功。 相信自己,你可以做到。 相信自己是取得成功的关键,只有相信自己,才会有动力去学习英语。记住,你可以做到任何事情,只要你相信自…

    英语知识 2023年06月04日
    11
  • 英语中的副词解释

    副词是英语语法中的一种重要词类,它用来修饰动词、形容词、其他副词或整个句子,以表示时间、地点、程度、方式等概念。副词的作用在于让语言更加丰富、生动,能够帮助人们更加准确地表达自己的思想和意图。 在英语中,副词可以分为多种类型。其中最常见的是时间副词、地点副词、方式副词、程度副词等。 时间副词用来表示事件发生的时间,比如“yesterday”(昨天)、“today”(今天)、“tomorrow”(明天)等;地点副词用来表示事件发生的地点,比如“here”(这里)、“there”(那里)、“everywhere”(到处)等;方式副词用来表示事件发生的方式,比如“carefully”(小心地)、“q…

    英语知识 2023年06月04日
    11
  • 英语中分词的功能

    本文目录 1. 提高文本处理效率 2. 增强语义理解能力 3. 改善信息检索效果 中文分词是中文自然语言处理的基本工作之一,它是将一整段中文文本按照一定的规则切分成一个个有意义的词语,是中文文本处理的必要步骤。分词的功能主要表现在以下几个方面: 1. 提高文本处理效率 中文分词可以将一篇长篇的文章或者一段对话按照词语单位进行切分,使机器能够更快速地识别和理解文本,提高文本处理效率。在搜索引擎、机器翻译、语音识别等领域,分词技术都是必不可少的。 2. 增强语义理解能力 中文分词还能帮助计算机更好地理解文本的语义,识别出每个词语的含义和作用,从而更准确地表达文本的意思。比如,“我喜欢吃苹果”中,分…

    英语知识 2023年06月04日
    11
  • 为什么联系具有多样性

    英语知识是一项广泛的技能,涉及听、说、读、写四个方面,同时也涉及词汇、语法、发音、文化等多个方面。在我们学习英语的过程中,联系是不可或缺的一部分。而联系之所以具有多样性,有以下几个原因。 首先,英语联系的多样性反映了英语知识的多样性。因为英语知识包罗万象,所以我们需要通过多种不同的方式来学习和联系。例如,我们可以通过听力练习来提高我们的听力技能,通过口语练习来提高我们的口语流利度,通过阅读练习来提高我们的阅读理解能力,通过写作练习来提高我们的写作技能。不同的联系方式可以帮助我们更全面地掌握英语知识。 其次,英语联系的多样性也可以满足不同学习者的需求。不同的学生有不同的学习风格和学习目标,因此需…

    英语知识 2023年06月04日
    11
  • 形容平衡的古句

    在古代中国,平衡是一种非常重要的美德。古人认为平衡是一种道德上的美德,也是一种身体上的健康。因此,许多古代的诗歌和典籍都含有形容平衡的句子。以下是一些经典的古句,用于形容平衡。 《易经》中有一句话:“天行健,君子以自强不息。”这句话意味着天空中的星星和行星运动平衡,这是一种伟大的美德。同样地,人们也应该追求平衡和稳定,以便在生活中保持健康和稳定。 另一句古语是:“有节制地吃,才能够长寿。”这句话意味着人们应该在饮食上保持适度和平衡。如果我们吃得太多或吃得太少,都会对身体产生负面影响。因此,只有在食物摄入上保持平衡,才能保持身体健康。 “水滴石穿,绳锯木断。”这句话意味着坚持不懈的努力可以达到目…

    英语知识 2023年06月04日
    11
  • 到时候的书面语表达

    本文目录 1.开头语 2.正文 3.结尾语 在日常的英语交流中,我们常常使用口语化的语言。但是在一些正式的场合,如写邮件或者写报告时,我们需要使用更加正式的书面语表达方式。下面是一些常用的书面语表达。 开头语 在开头,我们需要使用一些礼貌的开头语来引入自己的话题。下面是一些常用的开头语: Dear Sir/Madam,(亲爱的先生/女士,) To Whom It May Concern,(敬启者,) Dear Mr./Ms. {姓氏},(尊敬的{先生/女士},) 正文 在正文中,我们需要使用一些正式的词汇和语法结构,来表达自己的意思。下面是一些常用的词汇和语法结构: Therefore,(因此…

    英语知识 2023年06月04日
    11
  • 书面语的表达效果

    书面语是指人们在书写或文稿中使用的语言,相对口语而言,它更加规范、准确、简洁,具有更高的表达效果。书面语不仅在学术研究、文学创作等领域中得到广泛应用,而且在商务信函、公文写作、新闻报道等方面也是必不可少的。 首先,书面语的准确性和规范性非常重要。在书面语中,语法、拼写、标点等方面的错误都会影响到文章的可读性和表达效果。因此,使用规范的语言和正确的语法结构可以让文章更加清晰明了,更有说服力。此外,书面语还需要具有一定的专业性,以便更好地传递信息和表达思想。 其次,书面语的简洁性也是至关重要的。在写作中,过度冗杂的语言和无关紧要的细节会使文章显得累赘、晦涩难懂,影响读者的阅读体验。因此,作者应该充…

    英语知识 2023年06月04日
    11