JS中的引用类型包括:Object/Array/RegExp/Date/基本包装类型(String/Number/Boolean)。其中,遍历继承Object类型的对象的方法主要包括:for..of、for..in、Object.keys、Object.getOwnProperty 遍历Array对象的方法主要包括:for forEach filter map every some for..in.. for..of.. 下面将对这些方法的使用场合、性能等进行详细的总结。
JS中可以直接用、可访问到的对象属性分为数据属性和访问器属性。数据属性(实际存储属性值的属性)包括:
1.value:属性值
2.writable:true/false控制是否可被修改
3.enumerable:true/false控制是否可被for in遍历(是否可枚举)
4.configurable: true/false(1)控制属性是否可被delete(2)控制是否可修改前两个特性(3)一旦设为false则是不可逆的
访问器属性(不实际存储数据,专门用于对其他数据/变量的保护)包括:
1.get:在读取属性时调用的函数,默认值为undefined
2.set:在写入属性时调用的函数,默认值为undefined
3.configurable:(1)控制是否可被delete(2)控制是否修改其他属性特性(3)控制是否可以修改为访问器属性
4.enumerable:是否可枚举
1.可枚举|自身|原型属性:for...in... 不能保证属性名按对象原来的顺序输出,注意用于数组时则返回索引号
var obj={a:1,b:2,c:3};
for(var prop in obj){
console.log('obj.'+prop+'='+obj[prop]); //使用变量访问属性
}
2.可枚举|自身属性|返回属性名组成的数组:Object.keys() 不能保证属性名按对象原来的顺序输出
var obj={a:1,b:2,c:3};
console.log(Object.keys(obj)); //输出['a','b','c']
var props=Object.keys(obj);
for(var prop in props){
var inprop=props[prop];
console.log(obj[inprop]); //输出1 2 3
}
var arr=[1,2,3];
console.log(Object.keys(arr)); //输出[0,1,2]
3.可枚举/不可枚举|自身属性 Object.getOwnPropertyNames() 返回自身属性的属性名组成的数组
var obj={a:1,b:2,c:3};
console.log(Object.getOwnPropertyNames(obj)); //输出['a','b','c']
4.es6|可迭代对象(Array/Map/Set/argument)for...of... 输出对象属性值,而非对象key值(属性名)
var obj={a:1,b:2,c:3};
for(var value of obj){
console.log(value); //输出1 2 3
}
1.for语句
var arr=[1,3,2,4,5];
for(var i=0,len=arr.leng;i console.log(arr[i]); } 2.仅数组|每个元素的回调函数 forEach语句 性能比普通for循环弱 让数组中的每一项做一件事(不可用return) var arr=[1,3,2,4,5]; arr.forEach(function(item,index){ console.log(item); }); 3.map语句 实际效率比forEach弱 通过计算返回一个新数组 var arr=[1,3,2,4,5]; arr.map(function(e,index){ console.log(e); }); var arr=[1,3,2,4,5]; var newArr=arr.map(function(e,index){ return e*2; }); console.log(newArr); //输出[2,6,4,8,10] 4.for...in.. 效率最低 5.for...of... 性能好于for...in...但比不上for循坏 可以由break, continue, throw 或return终止。 6.filter 筛选出数组中符合的项组成新数组 7.reduce 让数组中的前项和后项做某种计算,并返回最终累计值 8.every 检查数组中的每一项是否符合条件,全部符合才能返回true 9.some 检查数组中的某些项是否符合条件,有一项符合即返回true 1.$().each() 主要用于处理dom上的对象 2.$.each() 主要用于遍历数组二、Jquery中each的使用
$.each(["aaa","bbb","ccc"],function(index,value){
alert(i+"..."+value);
});
三、C#中循环遍历