forEach介紹
==forEach方法沒辦法使用 break 語句跳出循環(huán),或者使用return從函數體內返回==
let data = [1, 2, 3, 7, 53, 9]
data.forEach((item, i) => {
console.log(item)
if(item == 2) return
})
// 每個item都打印出來
for-in介紹
以下代碼會出現的問題:
- index 值 會是字符串(String)類型,不能直接進行幾何運算
- 使用for in會遍歷數組所有的可枚舉屬性,包括原型窃祝。例如上栗的原型方法method和name屬性摔寨,所以for in更適合遍歷對象罐孝,不要使用for in遍歷數組。
- 遍歷順序有可能不是按照實際數組的內部順序
==for-in循環(huán)設計之初掩驱,是給普通以字符串的值為key的對象使用的潘靖。而非數組。==
let data = [1, 2, 3, 7, 53, 9]
for(var index in data){
typeof index //string
// index為數組循環(huán)的值
// 0蚤蔓,1卦溢,2,3,4单寂,5
}
for-of介紹
- 可以避免所有 for-in 循環(huán)的陷阱
- 不同于 forEach()贬芥,可以使用 break, continue 和 return
- for-of 循環(huán)不僅僅支持數組的遍歷。同樣適用于很多類似數組的對象
- 它也支持字符串的遍歷
- for-of 并不適用于處理原有的原生對象
let data = [1, 2, 3, 7, 53, 9]
for(var index of data){
typeof index //number
// index為數組循環(huán)的每一個值
// 1宣决,2蘸劈,4奶赔,7舍败,53,9
}
記住伤哺,for in遍歷的是數組的索引(即鍵名)洼专,而for of遍歷的是數組元素值棒掠。
for-of 遍歷 Set
set類似于數組,但是成員的值都是唯一的屁商,沒有重復的值烟很。Set本身是一個構造函數,用來生成 Set 數據結構蜡镶。
let data = [1,2,3,4,2,1,4,5]
let setData = new Set(data)
// setData = [3,5]
var uniqueWords = new Set(words);
for (var word of uniqueWords) {
console.log(word);
}
// 可以遍歷set數據
for-of 遍歷 Map
javaScript 的對象(Object)雾袱,本質上是鍵值對的集合(Hash 結構),但是傳統(tǒng)上只能用字符串當作鍵官还。這給它的使用帶來了很大的限制芹橡。
它類似于對象,也是鍵值對的集合妻枕,但是“鍵”的范圍不限于字符串僻族,各種類型的值(包括對象)都可以當作鍵。
let o = {name: '七分'}
let m = {name: '三分'}
let bookMap = new Map()
bookMap.set(o, 'seven value')
bookMap.set(m, 'three value')
for (var [key, value] of bookMap) {
console.log(key + "'phone value is: " + value);
}
// key {name: '七分'}, {name: '三分'}
for-of 遍歷原生對象
let params =[
{
name: '李',
value: '18'
},
{
name: '張',
value: '21'
}
]
for (var key of Object.keys(params)) {
console.log(key + ": " + params[key]);
// key 0,1
// params[key] {name: '李',value: '18'},{name: '張',value: '21'}
}
http://es6.ruanyifeng.com/#docs/iterator#for---of-%E5%BE%AA%E7%8E%AF