1.标准的for循环遍历数组
//不打印自定义属性和继承属性
var array = [1,2,3];
for (var i = 0; i < array.length; i++) {
console.log(array[i]);
}
2.for in 遍历对象

不要用for in遍历数组,因为还会打印自定义属性和继承属性

一般常用来遍历非数组的对象并且使用hasOwnProperty()方法去过滤掉原型链上的属性

数组的key是string类型,因为js中一切皆为对象。

var array = [1,2,3];
//自定义属性
array.desc ='four';
//继承属性 扩展了js原生的Array
Array.prototype.test=function(){} array.hasOwnProperty('desc') //true
array.hasOwnProperty('test') //false for(var key in array){
console.log(array[key])
}
3.for of遍历数组

ES6里引入了一种遍历器(Iterator)机制,为不同的数据结构提供统一的访问机制。只要部署了Iterator的数据结构都可以使用 for ··· of ··· 完成遍历操作

它既比传统的for循环简洁,同时弥补了forEach和for-in循环的短板。

循环遍历键值对的value,与for in遍历key相反

如果实在想用for…of来遍历普通对象的属性,可以先获取对象的所有key的数组Object.keys(),然后遍历

( Iterator详解 :http://es6.ruanyifeng.com/#docs/iterator )

( for of 例子:https://www.cnblogs.com/m2maomao/p/7743143.html )

//不打印自定义属性和继承属性
for(var value of array){
console.log(value)
}
4.forEach遍历数组 VS map VS $.each

forEach遍历数组,而且在遍历的过程中不能被终止,必须每一个值遍历一遍后才能停下来

//不打印自定义属性和继承属性
array.forEach((value,index,arr)=>{
console.log(value);
}); //注意其与jQuery的$.each类似,只不过第1个和第2个参数正好是相反的
//thisArg为执行回调时的this值
[].forEach(function(value, index, array) { /*...*/ } ,thisArg) //返回值:undefined
[].map(function(value,index,array){ return value*2 }, thisArg) //返回值:返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
$.each([], function(index, value) { /*...*/ }); //$.each遍历数组或者类数组
5.$.each
$.each([], function(index, value) { /*...*/ }); //$.each遍历数组或者类数组
$.each({}, function(key, value) { /*...*/ }); //$.each遍历Object
$().each(function(index, value) { /*...*/ }); //遍历Dom元素

跳出 JQuery each循环,要实现break和continue的功能

  • return false; ——跳出所有循环;相当于for中break 效果。
  • return true; ——跳出当前循环,进入下一个循环;相当于for中continue 效果
对于类似数组的结构,可转换为数组
//divList不是数组,而是nodeList
var divList = document.querySelectorAll('div'); [].slice.call(divList) Array.prototype.slice.call(divList) [...divList] //ES6写法
总结:
  • forEach 遍历数组,而且在遍历的过程中不能被终止,必须每一个值遍历一遍后才能停下来
  • for in 以任意顺序遍历对象的可枚举属性,(最好不要用来遍历数组) 因此当迭代那些访问次序重要的 arrays 时用整数索引去进行 for 循环 (或者使用 Array.prototype.forEach() 或 for...of 循环) 。
  • (ES6)for...of 允许你遍历 Arrays(数组), Strings(字符串), Maps(映射), Sets(集合)等可迭代的数据结构等。不能遍历普通对象
  • for...in 遍历(当前对象及其原型上的)每一个key,而 for...of遍历(当前对象上的)每一个value;

JS中遍历数组、对象的方式的更多相关文章

  1. js中的数组对象排序

    一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var ar ...

  2. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

  3. js,jquery遍历数组,对象

    each的用法  1.数组中的each 复制代码 var arr = [ "one", "two", "three", "four ...

  4. js中的数组对象中的方法解析

    concat()方法:  合并两个数组,返回新对象的结果: join()方法 :  把数组内的所有元素加入到一个字符串中,传入的分隔符就是指定的分隔符 pop()方法: 删除数组并返回数组的最后一个元 ...

  5. js中如何访问对象和数组

    js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...

  6. js中的数组遍历

    js中的数组遍历是项目中经常用到的,在这里将几种方法做个对比. ! for循环:使用评率最高,也是最基本的一种遍历方式. let arr = ['a','b','c','d','e']; for (l ...

  7. 遍历js中的数组

    可以使用js中的for循环,或者forEach方法:也可以使用Ext中的方法遍历js中的数组 代码如下: /** * 遍历数组 */ var arr = ['越南', '新加坡', '美国', '俄罗 ...

  8. JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串

    JS遍历JSON对象 JS遍历JSON对象 <script> var obj = { "goodsid": "01001", "goods ...

  9. js中 给json对象添加属性和json数组添加元素

    js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...

随机推荐

  1. JavaScript基础(String)

    字符串 String 1.连接字符串 数字与字符串相加,为字符串 9+"9"; 2.字符串的长度 "abc".length; 3.从字符串中获取单个字符(索引下 ...

  2. 7、侧边栏:Menu

    1.单个侧边栏 导航的代码在分析源码的时候已经分析过了,下面只看他的一些应用与方法. /* ---示例代码----*/ <ion-menu [content]="mycontent&q ...

  3. spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式

    spring+hibernate 配置多个数据源过程 以及 spring中数据源的配置方式[部分内容转载] 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更多 个人分类: 工 ...

  4. 插入排序——Java实现

    一.排序思想 从数组第一个元素开始(0下标),该元素可以认为已经被排序: 取出待排序列中第一个元素,然后从“有序”序列中,从后往前扫描: 如果该元素(有序序列)大于待插入元素(待排序列),将该元素后移 ...

  5. ubuntu系统没有声音解决方法

    好像装了个放视频的软件,就没有声音了.后面网上搜到了一个简单粗暴的办法,效果很明显,改变权限后直接就有声音了. -------------------------------------------- ...

  6. python之迭代器

    原文 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的gen ...

  7. sublime text 3 添加代码片段

    工具>插件开发>新建代码片段 <snippet> <content> <![CDATA[ Hello, ${1:this} is a ${2:snippet} ...

  8. vuejs源码摘抄

    订阅功能的部分实现代码如下: /* */ var uid = 0; /** * A dep is an observable that can have multiple * directives s ...

  9. 开通cnblogs博客

    开通博客,准备记录学习和开发过程

  10. Spyder更改默认工作路径已经文件路径

    打开spyder,选择菜单栏中的Tools--->Preferences--->Current working directory   然后选择最下面的单选按钮The following ...