JavaScript中存在着不少循環的方法jquery
常見的有for,while,do while,for in等,web
ES5中的forEach,數組
ES6的for of ,數據結構
jquery中封裝的eachsvg
侷限性很大,經過累加數組索引,來輸出數組中的值。通常用來遍歷數組,不能遍歷對象,由於對象的長度是undefined,沒法做爲其循環的條件。函數
let person = { name1:"fur", age:"1", hobbies:{ study:"code", play:"games" } } let arr = ['fur','furfur','furfur-jiang'] console.log("遍歷對象結果:") console.log("person對象長度= "+person.length) console.log("遍歷數組結果:") for(let i = 0 ; i < arr.length ; i++){ console.log(arr[i]) }
for - 循環代碼塊必定的次數 while - 當指定的條件爲 true 時循環指定的代碼塊 do/while - 一樣當指定的條件爲 true 時循環指定的代碼塊
for…in 循環將遍歷對象的全部可枚舉屬性。不但能夠循環遍歷數組,還能夠循環遍歷對象。this
for (let index in Object) { // }
let person = { name1:"fur", age:"1", hobbies:{ study:"code", play:"games" } } let arr = ['fur','furfur','furfur-jiang'] //遍歷對象 console.log("遍歷對象結果:") for (let i in person) { if(person[i] instanceof Object){ for (let j in person[i]){ console.log(person[i][j]) } }else{ console.log(person[i]) } } //遍歷數組 console.log("遍歷數組結果:") for (let i in arr) { console.log(arr[i]) }
forEach() 方法用於調用數組的每一個元素,並將元素傳遞給回調函數。可經過參數直接獲取到值,其中item爲該索引下的值,index爲索引,arr爲數組自己,參數名可改變,可是順序不能改變。spa
注意:code
forEach() 對於空數組是不會執行回調函數的。xml
不能遍歷對象
array.forEach(function(item, index, arr), thisValue)
參數 | 描述 |
---|---|
currentValue | 必需。當前元素 |
index | 可選。當前元素的索引值。 |
arr | 可選。當前元素所屬的數組對象。 |
let arr = ['fur','furfur','furfur-jiang'] //遍歷數組 console.log("遍歷數組結果:") arr.forEach(function(item, index, arr){ console.log(item) console.log(index) console.log(arr) })
for...of
語句建立一個循環來迭代可迭代的對象。ES6新增的方法,可是缺點是沒法遍歷自定義普通對象。
for...of
容許你遍歷 Arrays(數組), Strings(字符串), Maps(映射), Sets(集合),TypedArray,函數的 arguments 對象,NodeList 對象等可迭代的數據結構等。
for (variable of iterable) { statement }
let arr = ['fur','furfur','furfur-jiang'] //遍歷數組 console.log("遍歷數組結果:") for (let item of arr){ console.log(item) }
Set 和 Map 結構
Set 結構遍歷時,返回的是一個值,而 Map 結構遍歷時,返回的是一個數組,該數組的兩個成員分別爲當前 Map 成員的鍵名和鍵值。
let map = new Map() map.set("name1","fur") map.set("name2","furfur") map.set("name3","furfur-jiang") // 也能夠這樣鏈式定義 //let map = new Map().set("name1","fur").set("name2","furfur").set("name3","furfur-jiang") console.log("Set結構遍歷:") for(let [key,value] of map) { console.log(key +'.'+ value) } console.log("Map結構遍歷:") for(let i of map){ console.log(i) }
jquery下的each方法有兩種:
一種爲$(’ ').each(),是搭配jq選擇器遍歷jquery對象獲取頁面元素的方法。
一種爲$.each()循環方法,用於循環遍歷數組、對象。
注意:用這個方法須要導入jq的包,each與forEach的item和index放置位置相反哦!
let person = { name1:"fur", age:"1", hobbies:{ study:"code", play:"games" } } let arr = ['fur','furfur','furfur-jiang'] //遍歷對象 console.log("遍歷對象結果:") $.each(person,function(index,item){ if(item instanceof Object){ $.each(item,function(index,item){ console.log(index+'.'+item) }) }else{ console.log(index+'.'+item) } }) //遍歷數組 console.log("遍歷數組結果:") $.each(arr,function(index,item){ console.log(index+'.'+item) })
碼字不易,有用的話點個贊呀!謝謝