for-in和for-of

  1.  for-in循环实际是为循环”enumerable“对象而设计的,是用来循环带有字符串key的对象的。
    使用for in会遍历数组所有的可枚举属性,包括原型。所以for in更适合遍历对象,不要使用for in遍历数组。

  var obj = {a:1, b:2, c:3};
  for (var prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
  }

  2.  for-of可用于循环数组value值,或者可迭代对象,如Map, Set, String。
    如果循环普通的对象,需要通过和Object.keys()搭配使用。

  var student={
  name:'wujunchuan',
  age:22,
  locate:{
    country:'china',
    city:'xiamen',
    school:'XMUT'
  }
  }
  for(var key of Object.keys(student)){
  //使用Object.keys()方法获取对象key的数组
  console.log(key+": "+student[key]);
  }

  3. 总结: 

  1. 推荐在循环对象属性的时候,使用for...in,在遍历数组的时候的时候使用for...of。
  2. for...in循环出的是key,for...of循环出的是value
  3. 注意,for...of是ES6新引入的特性。修复了ES5引入的for...in的不足
  4. for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

forEach和Map

  共同点:
    1. 都是循环遍历数组中的每一项。
    2. forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value,当前项的索引index,原始数组array。
    3. 匿名函数中的this都是指Window。
    4. 只能遍历数组。

  1. forEach
    没有返回值,不能中断循环(使用break语句或使用return语句),只是针对每个元素调用func。

  var ary = [12,23,24,42,1];
  var res = ary.forEach(function (value,index,array) {
  console.log(value*10);
  })
  console.log(res);//-->undefined;
  console.log(ary);//-->[12,23,24,42,1] 原来的数组不变;

  2. Map
    返回一个新的Array,新数组元素为原来的数组的每个元素调用func的结果,对原来数组不影响。

    var ary = [12,23,24,42,1];
var res = ary.map(function (value,index,array) {
return value*10;
})
console.log(res);//-->[120,230,240,420,10];
console.log(ary);//-->[12,23,24,42,1];

最新文章

  1. PHP 文件夹操作「复制、删除、查看大小」迭代实现
  2. 几何服务,cut功能,输入要素target(修改前)内容。
  3. 搭建一个简单的Struts2(Struts2_HelloWorld)
  4. ACE - Reactor实现I/O,Dispatch,Service三层完整服务器(完结)
  5. Graphical installers are not supported by the vm
  6. Fragment和Activity的区别
  7. 面试题_1_to_16_多线程、并发及线程的基础问题
  8. Java 正则表达式漏洞
  9. JavaScript基本程序结构
  10. 理解$watch ,$apply 和 $digest --- 理解数据绑定过程
  11. java 5 ReadWriteLock
  12. 他们控制的定义-DragButton
  13. 实现Launcher编辑模式(1) 壁纸更换
  14. Linux常用命令-jdk和Tomcat
  15. Winform中TextBox控件开启自动提示补全功能
  16. Beta冲刺第三天
  17. Windows获取进程完整路径
  18. html5中视频播放问题总结
  19. 2019-03-22-day017-re模块
  20. new命令简化的内部流程

热门文章

  1. EF SaveChanges() 报错(转载)
  2. Spring Boot 初始化运行特定方法
  3. 关于git的一个错误提示
  4. js 如何移除一个匿名函数的绑定事件
  5. 教你读懂vue源码技术教程
  6. Tars --- Hello World
  7. 我的Java之旅 第三课 从Applet到JSP
  8. Session Cookies随笔
  9. DevOps自动化工具集合
  10. 游标和递归sql 的一些代码