原生JavaScript 遍历

  1、for 循环遍历

  1. let array1 = ['a','b','c'];
  2.  
  3. for (let i = 0;i < array1.length;i++){
  4. console.log(array1[i]); // a b c
  5. }

  2、JavaScript 提供了 foreach()  map() 两个可遍历 Array对象 的方法

    forEach和map用法类似,都可以遍历到数组的每个元素,而且参数一致;   

  1. Array.forEach(function(value , index , array){ //value为遍历的当前元素,index为当前索引,array为正在操作的数组
  2. //do something
  3. },thisArg) //thisArg为执行回调时的this值

    不同点:

forEach() 方法对数组的每个元素执行一次提供的函数。总是返回undefined;

            map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。返回值是一个新的数组;

             例子如下:

  1. var array1 = [1,2,3,4,5];
  2.  
  3. var x = array1.forEach(function(value,index){
  4.  
  5. console.log(value); //可遍历到所有数组元素
  6.  
  7. return value + 10
  8. });
  9. console.log(x); //undefined 无论怎样,总返回undefined
  10.  
  11. var y = array1.map(function(value,index){
  12.  
  13. console.log(value); //可遍历到所有数组元素
  14.  
  15. return value + 10
  16. });
  17. console.log(y); //[11, 12, 13, 14, 15] 返回一个新的数组

  

  对于类似数组的结构,可先转换为数组,再进行遍历

  

  1. let divList = document.querySelectorAll('div'); //divList不是数组,而是nodeList
  2.  
  3. //进行转换后再遍历
  4. [].slice.call(divList).forEach(function(element,index){
  5. element.classList.add('test')
  6. })
  7.  
  8. Array.prototype.slice.call(divList).forEach(function(element,index){
  9. element.classList.remove('test')
  10. })
  11.  
  12. [...divList].forEach(function(element,index){ //ES6写法
  13. //do something
  14. })

  3、 for ··· in ···     /      for ··· of ···

     for...in 语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。每次迭代时,分配的是属性名  

     补充 : 因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行 for 循环 (或者使用 Array.prototype.forEach() 或 for...of 循环) 。

  1. let array2 = ['a','b','c']
  2. let obj1 = {
  3. name : 'lei',
  4. age : '16'
  5. }
  6.  
  7. for(variable in array2){ //variable 为 index
  8. console.log(variable ) //0 1 2
  9. }
  10.  
  11. for(variable in obj1){ //variable 为属性名
  12. console.log(variable) //name age
  13. }

  

      ES6新增了 遍历器(Iterator)机制,为不同的数据结构提供统一的访问机制。只要部署了Iterator的数据结构都可以使用 for ··· of ··· 完成遍历操作  ( Iterator详解 :  http://es6.ruanyifeng.com/#docs/iterator ),每次迭代分配的是 属性值

   原生具备 Iterator 接口的数据结构如下:

      Array   Map Set String TypedArray 函数的arguments对象 NodeList对象

  1. let array2 = ['a','b','c']
  2. let obj1 = {
  3. name : 'lei',
  4. age : '16'
  5. }
  6.  
  7. for(variable of array2){ //variable 为 value
  8. console.log(variable ) //'a','b','c'
  9. }
  10.  
  11. for(variable of obj1){ //普通对象不能这样用
  12. console.log(variable) // 报错 : main.js:11Uncaught TypeError: obj1[Symbol.iterator] is not a function
  13. }
  14.  
  15. let divList = document.querySelectorAll('div');
  16.  
  17. for(element of divlist){ //可遍历所有的div节点
      //do something
    }

  如何让普通对象可以用for of 进行遍历呢?  http://es6.ruanyifeng.com/#docs/iterator  一书中有详细说明了!

  除了迭代时分配的一个是属性名、一个是属性值外,for in 和 for of 还有其他不同    (MDN文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)

    for...in循环会遍历一个object所有的可枚举属性。

      for...of会遍历具有iterator接口的数据结构

      for...in 遍历(当前对象及其原型上的)每一个属性名称,而 for...of遍历(当前对象上的)每一个属性值

  

  1. Object.prototype.objCustom = function () {};
  2. Array.prototype.arrCustom = function () {};
  3.  
  4. let iterable = [3, 5, 7];
  5. iterable.foo = "hello";
  6.  
  7. for (let i in iterable) {
  8. console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
  9. }
  10.  
  11. for (let i of iterable) {
  12. console.log(i); // logs 3, 5, 7
  13. }

    

  

JavaScript遍历对象-总结一的更多相关文章

  1. javaScript遍历对象、数组总结(转载)

    javaScript遍历对象.数组总结  转载来源 https://www.cnblogs.com/chenyablog/p/6477866.html 在日常工作过程中,我们对于javaScript遍 ...

  2. JavaScript 遍历对象、数组总结

    在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天抽空把经常用到的方法小结一下,方便今后参考使用!   javaScript遍历对象总结     1.使用Objec ...

  3. javaScript遍历对象、数组总结

        javaScript遍历对象总结 1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性). var obj = {'0':'a ...

  4. JavaScript 遍历对象查找指定的值并返回路径

    问:JavaScript 如何查找对象中某个 value 并返回路径上所有的 key? let obj = { key1: 'str1', key2: { key3: 'str3' }, key4: ...

  5. javascript遍历对象的属性

    不同类型的循环 JavaScript 支持不同类型的循环: for - 多次遍历代码块 for/in - 遍历对象属性 while - 当指定条件为 true 时循环一段代码块 do/while - ...

  6. JavaScript遍历对象4种方法和遍历数组的3种方式 代码

    //遍历对象 4种方法 //Object.keys(obj).forEach() console.log("keys...遍历</br>") var obj1 = { ...

  7. 关于javascript遍历对象

    1:遍历对象属性var obj={a:'aa',b:'bb'} for(var i in obj) { alert(i); //输出 a b } var obj={'a':'aa','b':'bb'} ...

  8. JavaScript遍历对象中所有元素

    操作对象如下,属性名不确定: 遍历方法: var temp = new Array(); for(var i in result.datas[0]){ temp.push(result.datas[0 ...

  9. JavaScript遍历对象方法总结

    前言 本篇内容将按照下图展开: 遍历Object Object最常见的遍历方法方法就是使用for...in...,但其有一定的局限性,比如只能遍历可枚举属性.虽然Object无法直接使用for循环和f ...

随机推荐

  1. Spring配置文件的xsd知识点

    今天在Spring配置文件中配置如下事务属性时,提示<tx is not bound(不受约束的),估计是配置文件的xsd没配置好. <!-- 2.配置事务属性 --> <tx ...

  2. jQuery遍历-祖先

    祖先是父.祖父或曾祖父等等. 通过 jQuery,您能够向上遍历 DOM 树,以查找元素的祖先. 向上遍历 DOM 树 这些 jQuery 方法很有用,它们用于向上遍历 DOM 树: parent() ...

  3. python专题-Mysql数据库(python3._+ PyMysql)

    之前写过一篇 Python使用MySQL数据库的博客,主要使用的是Python2和MySQLdb驱动. python使用mysql数据库 Python2 ---> Python3 MySQLdb ...

  4. 工具类:将其他编码类型转换成UTF-8或者其他类型的工具类

    将其他编码类型转换成UTF-8或者其他类型的工具类 public static String changeUTF(String str) { String newStr = null; try { n ...

  5. Keepalive之nginx调度架构

    author:JevonWei 版权声明:原创作品 单主模式Keepalive之Nginx调度 实验目的:实现Nginx调度的高可用,当一台Nginx调度器故障时,启用备用的Nginx调度,在架构中, ...

  6. Spring中ApplicationContext加载机制

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp33 加载器目前有两种选择:ContextLoaderListener和Co ...

  7. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解

    在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin ...

  8. grunt之connect、watch

    先说下这两个插件配合的用处,简单的说,它们可以拯救你的F5.connect用于建立一个静态服务器,watch监听文件的修改并自动实时刷新浏览器的页面. 还是options走起. connect(V0. ...

  9. C# 委托、匿名方法、lambda简介

    在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不 ...

  10. Swing-setAlignmentX()用法-入门

    先看下API: public void setAlignmentX(float alignmentX) 设置垂直对齐方式. 参数: alignmentX - 新的垂直对齐方式 网上关于这个函数的详细情 ...