針對js各種遍歷作乙個總結分析,從型別用處:分陣列遍歷和物件遍歷;還有效能,優缺點等。
1,普通for迴圈,經常用的陣列遍歷
var arr = [1,2,0,3,9];3,foreach,es5推出的,陣列自帶的迴圈,主要功能是遍歷陣列,實際效能比for還弱for ( var i = 0; i 2,優化版for迴圈:使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯
for(var j = 0,len = arr.length; j < len; j++)
arr.foreach(function(value,i));map遍歷支援使用return語句,支援return返回值
var temp=arr.map(function(val,index))foreach、map都是ecma5新增陣列的方法,所以ie9以下的瀏覽器還不支援console.log(temp);
5,for-of遍歷 是es6新增功能
for( let i of arr)for-of迴圈不僅支援陣列,還支援大多數類陣列物件,例如dom nodelist物件。
for-of迴圈也支援字串遍歷
1,for-in遍歷
for-in是為遍歷物件而設計的,不適用於遍歷陣列。
遍歷陣列的缺點:陣列的下標index值是數字,for-in遍歷的index值"0","1","2"等是字串
for (var index in arr)對於物件的遍歷,
let obj =
let obj =
for (let key in obj)
// key: a,value: b
// key: c,value: d
值得注意的是,for in 遍歷物件,會將原型鏈上的所有可列舉的屬性也遍歷到。
object.prototype.test = 'mytest'
let obj =
for (let key in obj)
//key: a,value: b
//key: c,value: d
//key: test,value: mytest
對於不可列舉的屬性(enumerable: false),比如說tostring方法,那麼for in 就不會遍歷到
// object.prototype.test = 'mytest'
object.defineproperty(object.prototype,'test',)
let obj =
for (let key in obj)
由於for in 遍歷會遍歷原型鏈上的屬性,所以一般我們想要遍歷物件本身的屬性的時候,要加hasownproperty來進行一層過濾。
object.prototype.test = 'mytest'
let obj =
for (let key in obj)
}//key: a,value: b
//key: c,value: d
使用object.keys()只能遍歷到自身本身並且是可列舉的屬性
object.prototype.test = 'mytest'
let obj =
let keys = object.keys(obj)
console.log(keys) //["a", "c"]
object.prototype.test = 'mytest'
let obj =
object.defineproperty(obj,'non-em',)
let keys = object.keys(obj)
console.log(keys) // ["a", "c", "non-em"]
object.prototype.test = 'mytest'
let obj =
object.defineproperty(obj,'non-em',)
let keys = object.getownpropertynames(obj)
console.log(keys) //["a", "c", "non-em"]
js陣列遍歷和物件遍歷
1.普通for迴圈var arr 1,2,3,4,5,6 for var i 0 i length i 2.優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯for var j 0 len arr.length j j 3.foreach,es5推出的,陣列自帶的迴...
js陣列遍歷和物件遍歷
針對js各種遍歷作乙個總結分析,從型別用處 分陣列遍歷和物件遍歷 還有效能,優缺點等。js陣列遍歷 1,普通for迴圈,經常用的陣列遍歷 var arr 1,2,0,3,9 for var i 0 i 2,優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯 for ...
js陣列遍歷和物件遍歷
針對js各種遍歷作乙個總結分析,從型別用處 分陣列遍歷和物件遍歷 還有效能,優缺點等。1,普通for迴圈,經常用的陣列遍歷 var arr 1,2,0,3,9 for var i 0 i 2,優化版for迴圈 使用變數,將長度快取起來,避免重複獲取長度,陣列很大時優化效果明顯 for var j 0...