我们在刚入门JS时候,说到要跑出数组的每个值肯定都是这样子:

var arr = [1,2,3,4,5,6];

for(let i = 0;i < arr.length;i++){

console.log(arr[i])

}

在这之后,有出了forEach作为数组原型使用:

var arr = [1,2,3,4,5,6];

arr.forEach((item)=>console.log(item));

但是,物件要怎么办呢?我们也可以用forEach吗(navaceLLes):

var obj = {a:1,b:2,c:3,d:4};

obj.forEach((item)=>console.log(item));

// TypeError: obj.forEach is not a function

看来是不行,幸好后来JS提供了for-in:

var obj = {a:1,b:2,c:3,d:4};

for(let item in obj){

console.log(item);

console.log(obj[item])

}

可以看到我们跑出来的都是key值,那数组也能跑吗?

var arr = [“a”,“b”,“c”,“d”,“e”,“f”];

for(let item in arr){

console.log(item);

console.log(arr[item]);

}

恩….看起来好像是可以,但是这边要注意到几个for-in陷井。

var arr = [“a”,“b”,“c”,“d”,“e”,“f”];

arr.sayHi =“HI!!!“;

for(let item in arr){

console.log(item);

console.log(arr[item]);

}

可以看到说,我们自定义的属性也会被显示出来。

而且for-in的遍历顺序可能会有浏览器上的差异,导致无法以一致的顺序遍历元素,因此MDN建议不要用于数组上:

那有没有只能显示数组值的方法呢?

有的,ES6推出了for-of,可以在「可迭代的物件」(Array,,Map,Set,String,TypedArray,arguments等)上作使用。

var arr = [“a”,“b”,“c”,“d”,“e”,“f”];

arr.sayHi =“HI!!!“;

for(let item of arr){

console.log(item);

}

var obj = {a:1,b:2,c:3,d:4};

for(let item of obj){

console.log(item);

}//TypeError: obj is not iterable

所以一般来说没有办法在物件上作使用,若真的不得已要用的话可以这样写:

var obj = {a:1,b:2,c:3,d:4};

for(let item of Object.keys(obj)){

console.log(obj[item]);

}

Object.keys(obj)会把所有物件内的key值转为数组,这样我们就能遍历该物件了。

不过通常来说,for-in会比较推荐用在物件上,而for-of会推荐用在数组上(victorynewsite)。

最新文章

  1. C# 正则表达式匹配汉字
  2. 使用PowerDesigner把oom设计图导出jpg格式的图片
  3. go 静态web服务器
  4. [APAC]查找资产表
  5. iOS 学习笔记 三 (2015.03.05)
  6. 使用java8
  7. 虚拟机之仅主机模式(HostOnly)链接外网设置
  8. 关于Eclipse中Jsp页面打不开并且显示Failed to create the part&#39;s controls的解决办法
  9. windows下安装mysql5.6.13的主从复制
  10. Flask -- 内容管理系统
  11. Properties 使用,注意编码
  12. ThinkPHP使用技巧经验总结
  13. CSS3-loading动画(五)
  14. Android 6.0 运行时权限处理问题
  15. Rabbitmq集群高可用
  16. elixir mix 简介
  17. 1171: lfx捧杯稳啦!
  18. Python循环文件推荐的方式,可用于读取文本最后一行或删除指定行等
  19. Effective Java 第三版——54. 返回空的数组或集合不要返回null
  20. $router.query和$router.params的区别

热门文章

  1. Android 接入X5WebView,让WebView加载更快;
  2. WPF 异步刷新页面,创建定时器
  3. 关于springboot
  4. java类库 collection与collections (转)
  5. js语法规则 ---console.log ---- prompt ----基本类型 ---parseInt
  6. 网页静态处理技术FreeMarker概述
  7. python3的命令行参数传递
  8. 对象 Object
  9. windows 服务管理器使用系统内置帐户时密码的输入
  10. 机器学习入门-数值特征-数据四分位特征 1.quantile(用于求给定分数位的数值) 2.plt.axvline(用于画出竖线) 3.pd.pcut(对特征进行分位数切分,生成新的特征)