JS 数组,对象以及其他迭代对象的循环
数组
arr.forEach((value,index,arr) => {},thisArg)
arr.map((value,index,arr) => {},thisArg)
arr.every((value,index,arr) => {},thisArg)
arr.some((value,index,arr) => {},thisArg)
arr.filter((value,index,arr) => {},thisArg)
arr.find((value,index,arr) => {},thisArg)
arr.findIndex((value,index,arr) => {},thisArg)
arr.reduce((accumulator,value,index,arr) => {},initialValue)
arr.reduceRight((accumulator,value,index,arr) => {},initialValue)
for (var i = 0; i < arr.length; i++) {}
没有办法终止或者跳出 forEach() 或者 map() 循环,除非抛出异常
Array 的 keys(),values(),entries() 返回的是迭代器对象
对象
- Object.entries()
- 返回一个给定对象自身除 Symbol 以外 可枚举 属性的键值对数组
- 与使用
for...in
循环遍历该对象时返回的顺序一致 - 不会枚举原型链中的属性
for (const [key, value] of Object.entries(obj)) { console.log(`${key}: ${value}`); }
- Object.keys(),Object.values() 同上
- for...in
- 以任意顺序遍历一个对象的除 Symbol 以外的 可枚举 属性
- 会枚举原型链中的属性
- 不应该用于迭代一个关注索引顺序的 array
- 获取的是 键名
可迭代对象
包括 Array
, Map
, Set
, String
, TypedArray
, arguments(arrayLike)
使用 for of
for (value of iterable) {
//statements
}
// value 迭代器返回的值
或者转变为数组
const array1 = [].slice.call(arrayLike)
const array2 = Array.prototype.slice.call(arrayLike)
const array3 = Array.from(arrayLike)
常见的类数组
- function 内部的 arguments 对象
- document.getElementsByTagName()/document.querySelectorAll('*');语句返回的对象
- 在 ECMAScript 5 标准中,字符串 string 就是一个只读的类数组对象
注意
对于没有 Iterator 接口的 arrayLike 对象,只能参照普通对象的循环方法
const arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JS 微任务宏任务执行顺序
下一篇: TypeScript 常见问题
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论