JS基本遍历方法详解
for
这大概是应用最广的循环语句了吧,简单实用,且大多数时候性能还是在线的,唯一的缺点大概就是太普通,没有特色,导致很多人现在不愿用它。
const array = [4, 7, 9, 2, 6]; for (const index = 0; index < array.length; index++) { const element = array[index]; console.log(element); } // 4, 7, 9, 2, 6
for...in
for...in
语句可以以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。
const temp = {name: "temp"}; function Apple() { this.color = 'red'; } Apple.prototype = temp; const obj = new Apple(); for (const prop in obj) { console.log(`obj.${ prop } = ${ obj[prop] }`); } // obj.color = red // obj.name = temp
如果你只要考虑对象本身的属性,而不是它的原型,那么使用 getOwnPropertyNames()
或执行 hasOwnProperty()
来确定某属性是否是对象本身的属性。
const temp = {name: "temp"}; function Apple() { this.color = 'red'; } Apple.prototype = temp; const obj = new Apple(); for (const prop in obj) { if (obj.hasOwnProperty(prop)) { console.log(`obj.${ prop } = ${ obj[prop] }`); } } // obj.color = red
当然,也可以用来遍历数组。
const arr = [1, 2, 3, 4, 5]; for (const key in arr) { console.log(key) } // 0,1,2,3,4
使用 for...in
可以遍历数组,但是会存在以下问题:
index 索引为字符串型数字(注意,非数字),不能直接进行几何运算。
遍历顺序有可能不是按照实际数组的内部顺序(可能按照随机顺序)。
所以一般不建议使用 for...in
来遍历数组。
for...of
for...of
语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。
const array = ['a', 'b', 'c']; for (const element of array) { console.log(element); } // a // b // c
for...of
和 for...in
的区别:
for...in
语句以任意顺序迭代对象的可枚举属性。for...of
语句遍历可迭代对象定义要迭代的数据。
Object.prototype.objCustom = function () { }; Array.prototype.arrCustom = function () { }; let iterable = [3, 5, 7]; iterable.foo = 'hello'; for (const key in iterable) { console.log(key); // logs 0, 1, 2, "foo", "arrCustom", "objCustom" } // 0, 1, 2, "foo", "arrCustom", "objCustom" for (const key of iterable) { console.log(key); } // 3, 5, 7
使用 for...of
遍历 Map 结构:
let nodes = new Map(); nodes.set("node1", "t1") .set("node2", "t2") .set("node3", "t3"); for (const [node, content] of nodes) { console.log(node, content); } // node1 t1 // node2 t2 // node3 t3
可以看出,使用 for...of
遍历 Map 结构还是挺方便的,推荐使用!
总结
- 如果普通 for 循环用腻了,推荐使用
for...of
来替代。 - 这三种循环都可以使用 break 关键字来终止循环,也可以使用 continue 关键字来跳过本次循环。
for...of
循环的适用范围最大。
以上就是JS基本遍历方法的详细内容,更多关于JS遍历方法的资料请关注脚本之家其它相关文章!
相关文章
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)2010-11-11获取下拉列表框的值是数组,split,$.inArray示例
获取下拉列表框的值是数组,下面用product_id 去匹配是否包含在一个数组中,感兴趣的朋友不要错过2013-11-11uniapp中微信小程序与H5相互跳转以及传参详解(webview)
在单位做项目的时候碰到一个需求,需要从微信小程序跳转到H5页面,下面这篇文章主要给大家介绍了关于uniapp中微信小程序与H5相互跳转以及传参的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-08-08JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
这篇文章主要介绍了JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码,通过阻止浏览器的默认行为各方面分析缩放的功能实现,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。2017-08-08跟我学习javascript的prototype使用注意事项
跟我学习javascript的prototype使用注意事项,介绍了在使用prototype的几点注意事项,需要的朋友可以参考下2015-11-11javascript实现input file上传图片预览效果
这篇文章主要介绍了javascript实现input file上传图片预览效果,感兴趣的小伙伴们可以参考一下2015-12-12
最新评论