1.for迴圈,需要陣列的長度
我們定義乙個陣列
var arr = ['a','b',3,4];
for(var i=0;i)for in(常用語遍歷物件)
//for in也可以遍歷陣列使用for in 也可以遍歷陣列,但是會存在以下問題:for(var i in
arr)
1.index索引為字串型數字,不能直接進行幾何運算
2.遍歷順序有可能不是按照實際陣列的內部順序
3.使用for in會遍歷陣列所有的可列舉屬性,包括原型
var arr = [,,]輸出結果為:arr.name=112
for(var i in
arr)
所以for in更適合遍歷物件。
for of則不會迴圈出上例中的name
var arr = [,,]輸出結果為:arr.name=112
for(var i of arr)
for in遍歷的是陣列的索引(即鍵名),而for of遍歷的是陣列元素值。
2.foreach迴圈,不必知道陣列長度,沒有返回值。(es5)
1 arr.foreach(functionjquery中有(item,index,arr))
$.each
()方法,前兩個引數正好相反
注:使用foreach遍歷陣列的話,使用break不能中斷迴圈,使用return也不能返回到外層函式
3. map函式,遍歷陣列每個元素,並**操作,需要返回值,返回值組成新的陣列,原陣列不變(es6)
var arr = [1,2,3,4];4. filter函式, 過濾通過條件的元素組成乙個新陣列, 原陣列不變(es6)var mymap = arr.map(function
(item,index,arr))
console.log(mymap) //逐個值求平方,輸出新陣列[1, 4, 9, 16]
var arr = [1,2,'3','a'];map和filter引數相同var numarr = arr.filter(function
(i))
console.log(numarr) //輸出新陣列[1,2]
var newarray = arr.map(function callback(currentvalue, index, array))
引數 callback:用來生成新陣列用的函式。
callback的引數:
currentvalue:當然正在處理的元素
index:正在處理元素的索引
array:呼叫map方法的陣列(就是.map()前面的也就是arr)
5. some函式,遍歷陣列中是否有符合條件的元素,返回boolean值,只要有乙個為真返回真(es5)
var arr = [1,2,'3','a'];6. every函式, 遍歷陣列中是否每個元素都符合條件, 返回boolean值,全部為真返回真(es5)var mysome = arr.some(function
(i))
console.log(mysome) //true
var arr = [1,2,'3','a'];7. reduce/reduceright函式,對資料遍歷並進行操作(es5)var myevery = arr.every(function
(i))
console.log(myevery) //false
var myarr = [1,3,5,7,9]輸出結果:var initialvalue = 10 //可選。傳遞給函式的初始值
var plus = myarr.reduce(function(total, num,index,arr),10)
console.log('plus:',plus) //計算10+1+3+5+7+9
reduceright方法功能和reduce一樣,不過是從右邊開始遍歷。
(個人總結,如有錯誤,歡迎指正)
js中幾種遍歷
抽空整理一下js中的遍歷,之前一直只用其中的for迴圈 filter foreach等少數幾種 這次把整個遍歷給梳理一遍 另外我們常用來中斷迴圈的語句 a continue 中斷本次迴圈 b return和break直接跳出迴圈。1.普通的for迴圈 let arr 1,2,3 for let i ...
總結js中的迴圈遍歷
定義乙個陣列和物件 const arr a b c d e f const obj 經常用來遍歷陣列元素 遍歷值為陣列元素索引for let i 0 len arr.length,i len i 用來遍歷陣列元素 第乙個引數為陣列元素,第二個引數為陣列元素索引,第三個引數為陣列本身 可選 沒有返回值...
js中物件的遍歷 總結
let obj 1 for in 迴圈for let key in obj for in迴圈遍歷物件自身的和繼承的可列舉屬性,所以我們使用for in迴圈時要使用hasownproperty方法對屬性進行判斷,只遍歷物件自身屬性。所以推薦第二種for in迴圈。for let key in obj ...