JS中遍历数组、对象的方式
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中遍历数组、对象的方式的更多相关文章
- js中的数组对象排序
一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var ar ...
- js中的数组对象排序(方法sort()详细介绍)
定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...
- js,jquery遍历数组,对象
each的用法 1.数组中的each 复制代码 var arr = [ "one", "two", "three", "four ...
- js中的数组对象中的方法解析
concat()方法: 合并两个数组,返回新对象的结果: join()方法 : 把数组内的所有元素加入到一个字符串中,传入的分隔符就是指定的分隔符 pop()方法: 删除数组并返回数组的最后一个元 ...
- js中如何访问对象和数组
js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...
- js中的数组遍历
js中的数组遍历是项目中经常用到的,在这里将几种方法做个对比. ! for循环:使用评率最高,也是最基本的一种遍历方式. let arr = ['a','b','c','d','e']; for (l ...
- 遍历js中的数组
可以使用js中的for循环,或者forEach方法:也可以使用Ext中的方法遍历js中的数组 代码如下: /** * 遍历数组 */ var arr = ['越南', '新加坡', '美国', '俄罗 ...
- JS/Jquery遍历JSON对象、JSON数组、JSON数组字符串、JSON对象字符串
JS遍历JSON对象 JS遍历JSON对象 <script> var obj = { "goodsid": "01001", "goods ...
- js中 给json对象添加属性和json数组添加元素
js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...
随机推荐
- Hashtable语法简介
Hashtable简述 Hashtable是System.Collections命名空间提供的一个容器 Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任 ...
- netty笔记(一)--Demo
Netty是一个Java开源框架,用于传输数据.由server和client组成,封装了Java nio,支持TCP, UDP等协议.这里写了一Demo EchoClientHandler.java ...
- hibernate的查询 (比较get 与load)
hibernate的查询的比较hibernate的查询有很多,Query,find,Criteria,get,load query使用hsql语句,可以设置参数是常用的一种方式 criteria的方式 ...
- 轻松掌握java读写锁(ReentrantReadWriteLock)的实现原理
转载:https://blog.csdn.net/yanyan19880509/article/details/52435135 前言 前面介绍了java中排它锁,共享锁的底层实现机制,本篇再进一步, ...
- Linux 网络(连接)相关参数作用
参考: [1] http://bbs.chinaunix.net/thread-2318039-1-1.html Backlog net.core.netdev_max_backlog = 1000 ...
- Java的API及Object
API: Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 源文件使用方法: Object类概述: O ...
- 二维数组针对某字段排序 - array_multisort()
/** * 针对二维数组下的某字段排序 * @param array $myarr 被排序数组 * @param string $sort_key 排序根据字段 * @param flag $sort ...
- 【起航计划ObjC 001】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用Obj-C
如何在最新版本的 Ubuntu下(14.10)来安装.编译Objective-C? Ubuntu已经有了对Objective-C的编译器(gobjc)的安装,因此安装gobjc的步骤可省,如果你用的U ...
- postman接口案例
接口测试 什么是接口(API) API全称Application Programming Interface,这里面我们其实不用去关注AP,只需要I上就可以.一个API就是一个Interface.我们 ...
- ubuntu14.04安装rabbitmq
ubuntu14.04安装rabbitmq及配置 1.修改/etc/apt/sources.list文件 命令:vi /etc/apt/sources.list 在最后一行加上:deb http: ...