JavaScript数组方法中的内置对象
在JavaScript中,数组的许多方法会接收函数作为参数,从而对数组的每个元素进行处理。这些方法在处理时会传入一些内置的对象,以便我们更方便地操作数组元素。
常见的内置对象
- value:数组元素的值
- index:数组元素的索引
- array:数组本身
例如:
const arr = [1, 2, 3];
arr.forEach(function(value, index, array) {
console.log(value, index, array);
});
输出:
几种常见的数组方法
forEach
forEach方法会遍历数组的每个元素
let arr = [1, 2, 3, 4, 5];
arr.forEach((it) => {
});
console.log(arr);
map
map方法会返回一个新的数组,对原数组的每个元素进行处理后放入新数组。
let arr = [1, 5, 6, 2, 3];
let res = arr.map((item) => {
return item * 2;
});
console.log(res);
filter
filter方法过滤数组,返回符合条件的元素组成的新数组。
let arr = [1,5,0,3];
// 可以赋值 不规范 filter是做过滤的
const res = arr.filter((it) => it>1);
console.log(res);
some & every
some和every会根据判断函数返回一个布尔值。
let arr = [1, 5, 1, 1, 1];
let res = arr.some((item) => {
return item >= 2;
});
console.log(res);
let arr = [2, 5, 2, 2, 2];
let res = arr.every((item) => {
return item >= 2;
});
console.log(res);
reduce
reduce()方法用于将数组的元素进行累加、累乘或者根据特定逻辑进行计算。
let arr = [
{
name: "数学",
score: 99,
},
{
name: "英语",
score: 97,
},
{
name: "语文",
score: 96,
},
];
// 1. 找到语文的成绩 不能直接使用索引
const res =arr.find(it=>it.name =='语文');
const score= res?res.score:undefined;
console.log(score);
// 2. 计算出总成绩
const add=arr.reduce((accumulator, it)=>accumulator+it.score,0);
console.log(add);
// 3. 计算出平均成绩
const averageScore=Math.ceil (add/arr.length);
console.log(averageScore);
// 4. 计算出最高分
let maxScore = arr.reduce((max, it) => Math.max(max, it.score), -Infinity);
console.log(maxScore);
// 5. 计算出最低分
// let minScore = arr.reduce((min, it) => Math.min(min, it.score), Infinity);
let minScore =arr.reduce((acc,it)=>acc<it.score ? acc:it.score)
console.log(minScore)
总结
内置对象为数组方法的回调函数提供了参数,可以更方便地获取值和索引,使代码更加简洁。