zoukankan      html  css  js  c++  java
  • 理清Js的各种遍历

    JS的遍历

    说起遍历,我常用JQ的each遍历DOM集,以及用map遍历Json。然而还有很多遍历方法for,forEach,for in等,有原生的有JQ的,他们有何区别呢?

    所以我决定写一写博客梳理我关于遍历的知识。

    首先,先分清原生jsjQuery的遍历方法:

    1.原生JS遍历方法:for、for in、forEach、for of、map

    2.jquery遍历方法:$.each、find

    原生JS遍历方法

    for

    常用于遍历数组

    forEach

    (ES5新增方法)用于遍历数组,遍历过程不能被终止(不能使用continue, break,但是可以使用return或者if中止)

    [].forEach(function(value,index,arr){...} [, thisObject]);
    

    callback : 函数测试数组的每个元素。(value:遍历数组的对应内容,index:对应的索引,arr:数组本身)

    thisObject : 对象作为该执行回调时使用(可用于改变上下文参数this)。

    返回值:返回创建数组

    for in

    循环遍历对象的key,即键值对里的键。

    常用于遍历对象(一般不推荐遍历数组 [把数组索引当成key去遍历],该遍历不能保证顺序,而且 原型链 上的属性也会被遍历到,因此一般常用来遍历 非数组的对象 并且使用 hasOwnProperty() 方法去过滤掉原型链上的属性)。

    for (variable in object) { ...}
    

    for of

    (ES6新增方法)循环遍历对象的value,即键值对里的值,与for in遍历key相反。

    for-of循环不仅仅是为遍历数组而设计的。基本上所有类数组对象都适用,比如DOM NodeListS。

    相比forEach(),它支持break,continue和return。

    总之,他设计的初衷就是成为一个优秀的遍历方法,已解决现有遍历的问题。

    for (variable of iterable) {...}
    

    map

    (ES5新增方法,Array.prototype.map,注意与ES6的Map键值对结构的对象的区别)这里的map指“映射”,也就是原数组被“映射”成对应新数组,返回值是一个新数组。基本用法跟forEach方法类似:

    var newArray = [].map(function(value,index,arr){return ...} [, thisObject]);
    

    跟forEach区别:map的回调函数中支持return返回值(即不改变原数组,克隆该数组,把克隆这一份数组的对应项改变)

    JQuery遍历方法

    $.each

    这里有两种遍历

    1.选择器遍历

    用于DOM操作

    $(selector).each(function(index,element)){...}
    

    index:选择器的index位置,element:当前的元素(也可使用 “this” 选择器)

    2.$.each

    用于遍历(数组、对象、JSON),类似原生JS的forEach(注意这里函数的参数顺序不同)

     $.each(data, function (index, value) {...}
    

    data:遍历的对象,index:当前元素位置,value:遍历的值

    find

    用于DOM操作

    $(selector).find(selector)
    

    如果给定一个表示 DOM 元素集合的 jQuery 对象,.find() 方法允许我们在 DOM 树中搜索这些元素的后代,并用匹配元素来构造一个新的 jQuery 对象。.find() 与 .children() 方法类似,不同的是后者仅沿着 DOM 树向下遍历单一层级。

  • 相关阅读:
    词云
    结巴分词
    重复值处理
    异常值判断
    MySQL基本使用
    缺失值处理
    fit_transform和transform的区别
    sklearn学习笔记之简单线性回归
    图解机器学习
    Unity---UNet学习(1)----基本方法介绍
  • 原文地址:https://www.cnblogs.com/ZpandaZ/p/7397098.html
Copyright © 2011-2022 走看看