首页 > 其他分享 >es6

es6

时间:2022-10-08 18:02:19浏览次数:45  
标签:es6 遍历 console keys Object entries obj

entries(),keys()和 values()

用户遍历数组,它们都返回一个遍历器对象,可以用for...of 循环进行遍历,唯一的区别是

  • keys() 是对键名的遍历;
  • values() 是对键值的遍历;
  • entries() 是对键值对的遍历;

一、一般数组用法

for of 支持遍历数组、类对象、字符串、Map对象、Set对象;
for of 不支持遍历普通对象数组,可通过参考下面的Object.keys()搭配使用遍历;

for(let index of ['a','b'].keys()){
    console.log(index)  
}
// 0
// 1


for(let val of ['a','b'].values()){
    console.log(val)  
}
// a
// b


for(let [index,val] of ['a','b'].entries()){
    console.log(index,val)
}
//0 'a'
//1 'b'

二、object对象keys(),values() entries();

ES5 引入Object.keys()方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。

  1. Object.keys()
    for of 不支持遍历普通对象,可通过与Object.keys() 搭配使用遍历
    返回值:数组
    错误写法:
let obj = { a: 1, b: 2, c: 3 };
for(let key of obj.keys()){
    console.log(key )
    
}
//VM564:2 Uncaught TypeError: obj.keys is not a function or its return value is not iterable
let obj = { a: 1, b: 2, c: 3 };

for (let key of Object.keys(obj)) {
  console.log(key); // 'a', 'b', 'c'
}
 var obj1 = {"name":"lucas","age":22};
  console.log(Object.keys(obj1)) //["name", "age"]

  1. Object.values()
    ES2017 引入了跟Object.keys配套的Object.values和Object.entries,作为遍历一个对象的补充手段,供for…of循环使用。

因为其他遍历方法比如for in只能通过obj[key]的方式拿到对象的键值,ES7可通过 Object.values(obj) 拿到对象的键值。

返回值:数组

et obj = { a: 1, b: 2, c: 3 };
for (let value of Object.values(obj)) {
  console.log(value); // 1, 2, 3
}

  var obj1 = {"name":"lucas",age:22};
 console.log(Object.values(obj1)) //["lucas", 22]

  1. Object.entries()

Object.entries()和 Object.keys 相关,不过 entries()函数会将 key 和 value 以数组的形式都返回。这样,使用循环或则将对象转为 Map 就很方便了。

let obj = { a: 1, b: 2, c: 3 };
for (let [key, value] of Object.entries(obj)) {
  console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3]
}

 var obj1 = {"name":"lucas",age:22};
 console.log(Object.entries(obj1)) //["name","lucas"] ["age",22]

Object.entries方法的一个用处是,将对象转为真正的Map结构。

    var obj2 = {foo:'bar',baz:42};
    var map2 = new Map(Object.entries(obj2));
    console.log(map2);   //map{"foo" => "bar", "baz" => 42}

标签:es6,遍历,console,keys,Object,entries,obj
From: https://www.cnblogs.com/cat-eol/p/16768756.html

相关文章

  • es6 模块化
    ES6InDepth是一系列关于ECMAScript标准第6版(简称ES6)中JavaScript编程语言新增功能的文章。不久之前,JavaScript的主要用途是表单验证,可以肯定的是,您的平均<input-onchang......
  • js高级ES6class构造函数与super继承
    <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="width=......
  • es6必会之let && const
    关键词:​​let​​​,​​const​​​,​​blockingscope​​​,​​temporaldeadzone​​​,​​redeclaration​​​,​​reassignment​​​,​​immutable​​​,​​ini......
  • js高级ES6解构语法
    <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="......
  • [转]node.js 支持 ES6 模块化
    需检查是否满足以下条件:1、确保安装了v14.15.1或更高版本的node.js2、命令初始化 package.jsonnpminit-y3、在 package.json的根节点中添加 "type":"modu......
  • ES6新特征高阶函数
    <!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"content="......
  • 前端-ES6
    ES6let和const在ES6中通常用let和const来声明,let表示变量、const表示常量let和const都是块级作用域,不存在变量提升const声明的是一个只读常量,在声明时......
  • es6新特性
    symboles6新引入的基本数据类型,用于表示一个独一无二的值,不能和其它数据类型运算模板字符串用${}来界定;反引号(``)直接搞定;<script>url="xxxxxx"//......
  • 手写Promise——基于es6的Promise实现(含详细注释)
      1.PromiseA+规范官方英文地址:​​https://promisesaplus.com/​​中文翻译可参考​​http://malcolmyu.github.io/malnote/2015/06/12/Promises-A-Plus/​​2.代码......
  • ES6中set的用法
    ES6中的set类似一个数组,但是其中的值都是唯一的,Set本身是一个构造函数,用来生成Set数据结构。set函数可以接受一个数组作为参数,用来初始化:constset=newSet([1,2,......