遍历
for
循环代码块一定的次数
for (let i = 0; i < 5; i++) {
console.log(i)
}
// 0 1 2 3 4
forIn
for...in 循环遍历对象的属性
let o = { name: 'Jack', age: 12 }
for (let key in o) {
console.log(key, o[key])
}
// name Jack
// age 12
forOf
for...of 遍历获取键值
与 forEach()不同的是,它可以正确响应 break、continue 和 return 语句
// array
var arr = ['a', 'b', 'c', 'd']
for (let a in arr) {
console.log(a) // 0 1 2 3
}
for (let a of arr) {
console.log(a) // a b c d
}
for...of 循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。这一点跟 for...in 循环也不一样。
let arr = [3, 5, 7]
arr.foo = 'hello'
for (let i in arr) {
console.log(i) // "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i) // "3", "5", "7"
}
Set 和 Map
var engines = new Set(['Gecko', 'Trident', 'Webkit', 'Webkit'])
for (var e of engines) {
console.log(e)
}
// Gecko
// Trident
// Webkit
var es6 = new Map()
es6.set('edition', 6)
es6.set('committee', 'TC39')
es6.set('standard', 'ECMA-262')
for (var [name, value] of es6) {
console.log(name + ': ' + value)
}
// edition: 6
// committee: TC39
// standard: ECMA-262
let map = new Map().set('a', 1).set('b', 2)
for (let pair of map) {
console.log(pair)
}
// ['a', 1]
// ['b', 2]
for (let [key, value] of map) {
console.log(key + ' : ' + value)
}
// a : 1
// b : 2
while
只要指定条件为 true,循环就可以一直执行
let i = 0
while (i < 5) {
console.log(i)
i += 1
}
// 0 1 2 3 4 5
do/while
do/while 循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环。
let i = 0
do {
console.log(i)
i += 1
} while (i < 5)
// 0 1 2 3 4 5
forEach
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
语法:
array.forEach(function(currentValue, index, arr), thisValue)
var arr = [1, 2, 3]
arr.forEach((item, index, arr) => {
// item为arr的元素,index为下标,arr原数组
console.log(item) // 1, 2, 3
console.log(index) // 0, 1, 2
console.log(arr) // [1, 2, 3]
})
some
some() 方法依次执行数组的每个元素
- 如果有一个元素满足条件,则表达式返回 true , 剩余的元素不会再执行检测。
- 如果没有满足条件的元素,则返回 false。
var arr = [1, 2, 3]
arr.some((item, index, arr) => {
// item为数组中的元素,index为下标,arr为目标数组
console.log(item) // 1, 2, 3
console.log(index) // 0, 1, 2
console.log(arr) // [1, 2, 3]
})
arr.some((item) => {
return item === 2
})
// true
var result = [1, 5, 3, 6].some((v, i) => v > 10) //所有元素都不满足,返回result = false
var result = [10, 5, 30, 60].some((v, i) => v < 10) //有一个(多个)满足,返回result = true
every
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
var arr = [1, 2, 3]
arr.every((item, index, arr) => {
// item为数组中的元素,index为下标,arr为目标数组
console.log(item) // 1, 2, 3
console.log(index) // 0, 1, 2
console.log(arr) // [1, 2, 3]
})
arr.every((item) => {
return item > 0
})
// true