for 循环 forEach():没有返回值,只是针对每个元素调用func map():返回新的Array,每个元素为调用func的结果 filter:返回付汇func条件的元素数组 some():返回Boolean,判断是否铀元素是否符合func条件 every(): 返回Boolean,判断每个元素是否符合func条件 reduce():接受一个函数作为累加器 for in
let arr = [1, 2, 3]
for 循环
for(let i = 0; i< arr.length; i++){
if(arr[i] == 2){
// break
continue
}
console.log(arr[a])
}
forEach()
后面是一个方法作为参数,方法里面有三个参数,第一个是当前正在遍历的对象,第二个是当前正在遍历的索引,第三个参数就是当前正在遍历的数组本身
arr.forEach(function(elem, index, array){
console.log(elem, index)
})
forEach() 不支持 break,也不支持 continue,在循环中无法跳出循环
map()
const result = arr.map(function(value)){
value += 1
return value
// console.log(value)
}
console.log(arr, result) // 1 2 3 2 3 4
forEach() 只是简单的循环,map()会遍历数组里面的每一个元素,根据返回值形成一个新的数组,并不会改变原有数组的值
filter
let result = arr.filter(function(value)){
console.log(value)
return value == 2
}
console.log(arr, result) // 1 2 3 2
filter会返回一个新的数组,新的数组是原来的数组经过筛选之后的,并不改变原数组
some()
let result = arr.some(function(value)){
console.log(value)
return value == 2
}
console.log(arr, result) // 1 2 3 true
some()只要在数组里面找到一个符合条件的就返回true,如果找不到就返回false
every()
let result = arr.some(function(value)){
console.log(value)
return value == 2
}
console.log(arr, result) // 1 2 3 false
every() 判断每个元素是否都符合条件
reduce()
第一个参数表示上一个接收回调的时候所对应的返回值,第一次的时候对应的初始值, 第二个参数表示当前正在处理的参数 第三个参数表示当前正在处理参数的索引 第四个参数表示当前数组
// 求出数组的和
let sum = arr.reduce(function(prev, cur, index, array)){
return prev + cur
}
console.log(sum) // 6
// 找到当前数组最大的值
let max = arr.reduce(function(prev, cur)){
return Math.max(prev, cur)
}
console.log(max) // 3
// 对于数组去重
let res = arr.reduce(function(prev, cur){
prev.indexOf(cur) == -1 && prev.push(cur)
return prev
}, [])
console.log(res)
for in
Array.prototype.foo = function(){
console.log('foo')
}
for( let index in arr){
console.log(index, arr[index])
}
for in 在遍历数组的时候是有问题的,我们不应该使用for in 这种方式去遍历数组