c++ map 遍历_数组遍历和对象遍历

题记

接着上一篇文章说一说数组遍历和对象遍历

数组遍历

按照个人的理解,又可以分为,JS 语句遍历 和 数组API 遍历;JS 语句遍历顾名思义是使用js的循环语句,例如 for循环语句,for...in语句等等;数组API遍历则是使用数组的API方法进行遍历。

数组API

ES5为数组定义了5个迭代方法,每个方法都接受两个参数:要在每一项上运行的函数和运行该函数的作用域对象(这个值可选)。该函数会接受三个参数:数组项的值、该项在数组中的位置、和数组对象本身。

1. every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true,则返回 true。

2. filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。

3. forEach():对数组中的每一项运行给定函数。这个方法没有返回值。

4. map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

5. some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true,则返回 true。

值得一提的是,以上方法都不会修改数组中的包含的值。在项目中比较常用的有foreach , map , filter。

ES6扩展了三个新的API entries()keys()values()——用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

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

如果不使用for...of循环,可以手动调用遍历器对象的next方法,进行遍历。

let letter = ['a', 'b', 'c'];let entries = letter.entries();console.log(entries.next().value); // [0, 'a']

对象的遍历

对象的遍历一般是为了遍历对象中的可枚举属性,通常都是使用js语句,for...in或者for...of进行遍历,有时候为了方便,也会使用Object.keys()获取对象的可枚举属性后进行其他操作;

ES6中有以下几个方法可以获取对象的属性:

  1.  Object.keys(obj)

  2.  Object.getOwnPropertyNames(obj)

  3.  Object.getOwnPropertySymbols(obj)

  4.  Reflect.ownKeys(obj)

有兴趣的话可以自己去看看这些方法具体有哪些区别。

for...in  和 for ... of的区别

for ... in是为遍历对象属性而构建的,不建议与数组一起使用,数组可以用Array.prototype.forEach()for ... of。for...in 通常用于检查对象属性。

for... of 基本上可以遍历所有的可迭代对象,例如 Array,Map,Set,String,TypedArray,arguments对象等等。甚至可以迭代Dom集合。

他们的主要区别在于迭代方式。

for...in 可以任意顺序迭代对象的可枚举属性。

for...of 遍历可迭代对象中的具体数据。

有的文章说 for...in 遍历的时候会沿着原型对象查找是否有这属性,明白了上面说的内容,似乎就可以解释他为什么会这么说了...

每篇文章尽量不超过1000字,觉得对你有帮助的话----欢迎关注,点赞,转发,评论。。。

a6837ec90068a972ac17c1202d7c5e1f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值