摘要:和在数组和对象中的区别在数组中的用法打印出来的是打印出来的是下标在对象中的用法打印出来的是,,打印出来的是,这是因为在中没有规定默认的属性解决办法使用方法将对象的键名生成一个数组,然后遍历这个数组。另一个方法是使用函数将对象重新包装一下。
for of 和 for in 在数组和对象中的区别 在数组中的用法:
const arr = [2, 3, 5, 4, 5, 2, 2];
for(let i of arr){
console.log(i) //打印出来的是value 2,3,5,4,2,2
}
for(let i in arr){
console.log(i) //打印出来的是下标 0,1,2,3,4,5,6
}
const obj = {"a":1,"b":2,"c":3}
for(let i in obj){
console.log(i) //打印出来的是key a,b,c
}
for(let i of obj){
console.log(i) //打印出来的是obj is not iterable,这是因为在es6中object没有规定默认的属性iterable
}
解决办法:
使用Object.keys方法将对象的键名生成一个数组,然后遍历这个数组。
for (let i of Object.keys(obj)) {
console.log(key + ": " + obj[key]);
}
另一个方法是使用 Generator 函数将对象重新包装一下。
function* entries(obj) {
for (let key of Object.keys(obj)) {
yield [key, obj[key]];
}
}
for (let [key, value] of entries(obj)) {
console.log(key, "->", value);
}
// a -> 1
// b -> 2
// c -> 3
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/108188.html
摘要:通过生成器创建的迭代器也是可迭代对象,因为生成器默认会为属性赋值。我们可以用来访问对象的默认迭代器,例如对于一个数组获得了数组这个可迭代对象的默认迭代器,并操作它遍历了数组中的元素。 ES6 新的数组方法、集合、for-of 循环、展开运算符(...)甚至异步编程都依赖于迭代器(Iterator )实现。本文会详解 ES6 的迭代器与生成器,并进一步挖掘可迭代对象的内部原理与使用方法 ...
摘要:一个对象如果要有可被循环调用的接口,就必须在的属性上部署遍历器生成方法原型链上的对象具有该方法也可。阮大神案例上面代码是一个类部署接口的写法。属性对应一个函数,执行后返回当前对象的遍历器对象。 最近看阮一峰阮大神的ES6,刚刚看到Iterator和for...of循环这一章,小作笔记跟大家略微分享一下,不足之处还望大家多多指正 Iterator(遍历器)就是一种机制;任何数据结构只要是...
摘要:前言又称提供一个全新的迭代器的概念,它允许我们在语言层面上定义一个有限或无限的序列。后者可以被用来帮助我们理解迭代器。但是当我们使用迭代器时,这个问题就迎刃而解了。是中的新语法,用来配合迭代器。这是因为数组的迭代器只返回其中预期的元素。 前言 EcmaScript 2015 (又称ES6)提供一个全新的迭代器的概念,它允许我们在语言层面上定义一个(有限或无限的)序列。 暂时先抛开它...
摘要:引用自可迭代对象和迭代器不以规矩,不成方圆为了使某个对象成为可迭代对象象,它必须实现方法,也就是说,它得有一个是的属性。的遍历,绝对应该用。 pseudo 英 [sju:dəʊ] 美 [su:doʊ]adj.假的,虚伪的n.[口]假冒的人,伪君子 pseudo-array 英 [sju:dəʊəreɪ] 美 [sju:dəʊəreɪ][计] 伪数组 jQuery 对象是伪数组 两个...
摘要:起源何为迭代器迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有方法,会返回一个结果对象。这个知名符号定义了为指定对象返回迭代器的函数。接下来被调用,迭代器结果对象的属性被读出并放入了变量。 起源 何为迭代器? 迭代器是被设计专用于迭代的对象,带有特定接口。所有的迭代器对象都拥有 next() 方法,会返回一个结果对象。该结果对象有两个属性:对应下一个值的 value...
阅读 2187·2021-11-15 11:38
阅读 1150·2021-09-06 15:02
阅读 3379·2021-08-27 13:12
阅读 1352·2019-08-30 14:20
阅读 2388·2019-08-29 15:08
阅读 636·2019-08-29 14:08
阅读 1722·2019-08-29 13:43
阅读 1463·2019-08-26 12:11