数组和对象的遍历方法小结
2017-01-03 10:07
288 查看
数组遍历
1.普通for循环
代码如下for(var i=0;i<arr.length;i++) { //do something here }
注:有待优化的空间
2.优化for循环
for(var i=0,len=arr.length;i<len;i++){ //do something here }
注:将长度缓存起来,避免重复获取,基本是性能最高的一种数组遍历方法。(在遍历长度较多的数组时,才会显示优势)
3. forEach循环
arr.forEach(function(el){ //do something here })
注:数组自带的方法
4. for in 方法
var arr=[2,3,4] for(var item in arr){ console.log(item)// 0,1,2 }
注:效率很低.该方法获取的是键名。应用于array时,为下标index,应用到对象时,为key。下文提到的for of循环获取到的是键值。
5. map方法
arr.map(function(item){ //do something here })
注:方式优雅,效率很低,还不如forEach
6. for of 循环(ES6)
for(var item of arr){ // do something here }
注:是ES6所支持的方法,凡是具有iterator接口的数据接口,都可以使用for of遍历他的成员。其内部的实现方法是调用数据结构的Symbol.iterator 方法。for of循环的使用范围包括:数组,Set,Map,类数组对象(如arguments对象,DOM Nodelist对象等),Generator对象,以及字符串等
对象的属性遍历
关于对象的遍历,主要是指其属性的遍历。以下总结6种方法来遍历对象的属性1. for in
for in循环遍历对象自身 和 可继承的 可枚举属性(不包含Symbol属性)2. Object.keys(obj)
该方法返回一个数组,包含对象自身的(不包含继承的)所有可枚举的属性(不包含Symbol属性)注:大多数情况下,我们只关心对象自身的属性,引入继承的属性会让问题 复杂化。所以尽量不要用for in循环而使用Object.keys()代替
3. Object.getOwnPropertyNames(obj)
包含对象自身的所有属性(不包含Symbol属性,但是包含不可枚举的属性)4. Object.getOwnPropertySymbols(obj)
返回一个数组,包含对象自身的所有Sybmol属性。5. Reflect.ownKeys(obj)
返回一个数组,包含对象自身的所有属性,不管属性名是否是Symbol或字符串,也不管是否是可枚举的6. Reflect.enumerate(obj)
与for in循环相同扩展阅读:属性的可枚举性
描述对象的每个属性都有一个描述对象(Descriptor),用于描述该属性的行为。
获取方法
通过Object.getOwnPropertyDescriptor方法可以获取该属性的描述对象
var a={A:1} Object.getOwnPropertyDescriptor(a,"A"); //{ // configurable:true, // enumerable:true,可枚举性,true // value:1, // writable:true //}
引入目的
当改属性为false时,标示某些操作会忽略这个属性:
for in 循环
Object.keys()
JSON.stringify()
Object.assign()
Reflect.enumerate()
实际上,引入改属性的目的,就是为了让某些属性能够规避掉for in循环
另外,ES6种规定,所有Class原型上的方法都是不可枚举的。
参考文献:
阮一峰:《ES6标准入门》
相关文章推荐
- JS中数组与对象的遍历方法实例小结
- jquery遍历筛选数组的几种方法和遍历解析json对象
- Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解
- Jquery遍历筛选数组的几种方法和遍历解析json对象|Map()方法详解
- jquery遍历筛选数组的几种方法和遍历解析json对象
- js 的each()方法遍历对象和数组
- 遍历数组和对象的方法
- jquery遍历筛选数组的几种方法和遍历解析json对象
- 在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法。两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点。 $().each,对于这个方法,在
- jquery遍历筛选数组的几种方法和遍历解析json对象
- jquery遍历筛选数组的几种方法和遍历解析json对象
- python遍历数组的方法小结
- OC视频3.8,3.9(集合对象之数组的常用方法)3.10(数组的遍历)
- jquery遍历筛选数组的几种方法和遍历解析json对象
- jquery遍历筛选数组的几种方法和遍历解析json对象
- js数组对象常用方法小结
- 三,遍历方法 1$.each(数组/对象,function处理); //$对象 调用的 2$(选择器).each(function处理); //jquery对象 调用的
- Javascript数组和对象的遍历方法
- OC数组对象NSArray的常用方法 以及oc数组中常用的遍历
- jQuery-each()方法:遍历数组、对象、选择集