JS 数组,对象以及其他迭代对象的循环

发布于 2025-01-15 17:27:20 字数 3409 浏览 5 评论 0

数组

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() 返回的是迭代器对象

对象

  1. Object.entries()
  2. 返回一个给定对象自身除 Symbol 以外 可枚举 属性的键值对数组
  3. 与使用 for...in 循环遍历该对象时返回的顺序一致
  4. 不会枚举原型链中的属性
    for (const [key, value] of Object.entries(obj)) {
    console.log(`${key}: ${value}`);
    }
    
  5. Object.keys(),Object.values() 同上
  6. for...in
  7. 以任意顺序遍历一个对象的除 Symbol 以外的 可枚举 属性
  8. 会枚举原型链中的属性
  9. 不应该用于迭代一个关注索引顺序的 array
  10. 获取的是 键名

可迭代对象

包括 ArrayMapSetStringTypedArrayarguments(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
26 人气
更多

推荐作者

IDC-hncloud

文章 0 评论 0

薆情海

文章 0 评论 0

mb_VjXiXQg5

文章 0 评论 0

爱,才寂寞

文章 0 评论 0

BE WATER

文章 0 评论 0

微信用户

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文