forEach 遍历
调用数组中每一次参数并且传递给回调函数
let arr = [{
name: 'Tom',
age: 20
}, {
name: 'Tony',
age: 22
}, {
name: 'Mary',
age: 18
}]
arr.forEach(function(ele, index, arr) {
console.log(ele, index, arr)
},)
// {name: "Tom", age: 20} 0 (3) [{…}, {…}, {…}]
// {name: "Tony", age: 22} 1 (3) [{…}, {…}, {…}]
// {name: "Mary", age: 18} 2 (3) [{…}, {…}, {…}]
参数 | 描述 |
---|---|
ele | 遍历当前的元素 |
index | 遍历元素的索引 |
arr | 遍历的数组 |
Array.forEach(callback,this)
Array
的第二个参数代表着 callback
函数中的 this
,如果没有第二个参数,则执行 window
。
<ul>
<li></li>
<li></li>
<li></li>
</ul>
arr.forEach(function(ele, index, self) {
this[index].innerHTML = ele.name;
}, document.getElementsByTagName("li"))
// <li>Tom</li>
// <li>Tony</li>
// <li>Mary</li>
filter 过滤
filter
过滤并且返回符合条件的新数组。
let arr = [{
name: 'Tom',
age: 20
}, {
name: 'Tony',
age: 22
}, {
name: 'Mary',
age: 18
}]
let nowarr = arr.filter(function(ele, index, arr) {
if (ele.age == 18) {
return true
}
})
console.log(nowarr)
// [{name: 'Mary', age: 18}]
Array.forEach(callback,this)
和 forEach
一样,如果填写了第二的参数代表着 callback
函数中的 this
。
map 修改
修改 Array
中的值。
let arr = [{
name: 'Tom',
age: 20
}, {
name: 'Tony',
age: 22
}, {
name: 'Mary',
age: 18
}]
let nowarr = arr.map(function(ele, index, arr) {
ele.age = 20;
return ele
})
console.log(nowarr)
// {name: "Tom", age: 20}
// {name: "Tony", age: 20}
// {name: "Mary", age: 20}
第二个参数也代表着 callback
函数中的 this
。
every 判断所有元素是否符合条件
let arr = [{
name: 'Tom',
age: 20
}, {
name: 'Tony',
age: 22
}, {
name: 'Mary',
age: 18
}]
var flag = arr.every(function(ele, index, arr) {
return ele.age > 16;
})
console.log(flag)
// true
some 判断是否有元素符合条件
let arr = [{
name: 'Tom',
age: 20
}, {
name: 'Tony',
age: 22
}, {
name: 'Mary',
age: 18
}]
var flag = arr.some(function(ele, index, arr) {
return ele.age > 20;
})
console.log(flag)
// true
reduce 累加器
callback(prevValue, ele, index, arr)
第一个参数代表着上一次记录的值,也可以通过 arr.reduce(callback, arr)
设置 prevValue
的默认值。
const arr = [1, 2, 3]
const sum = arr.reduce(function(prevValue, ele, index, arr) {
return ele + prevValue;
})
// sum => 6