目录
map()
映射数组,将原数组的每一项元素按照规则进行改变,将所有改变的结果组合成一个新数组
- 不改变原数组
- 返回值:映射后的新数组
- 参数:function
- item:每一项元素
参数解释
- 每次遍历都会执行一次匿名函数,每一项元素进行相应的改变
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// map应用场景:利用某种规则映射得到一个新数组
let arr = [1, 2, 3, 4]
// 每个元素加一 使用箭头函数
let arr1 = arr.map((value) => {
return value + 1
})
console.log(arr1);
// 每个元素乘二
let arr2=arr.map((value)=>{
return value*2
})
console.log(arr2);
</script>
</body>
</html>
filter()过滤器
过滤数组,把符合规则的元素组合成一个新数组
- 不改变原数组
- 返回值:过滤出来的新数组
- 参数:function
- item:每一项元素
参数解释
- 每次遍历都会执行一次匿名函数,其中函数返回值为 true 的元素,也就是符合条件的元素,就会被过滤出来,放到新数组中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let arr=[10,20,30,40,50,13]
let sun=[]
let Arr=arr.filter((value)=>{
// 筛选条件
return value>10
})
console.log(Arr);
// 筛选出偶数
let Arr1=arr.filter((value)=>{
// 取模2等于0
return value%2==0
})
console.log(Arr1);
</script>
</body>
</html>
forEach遍历数组
遍历数组,每遍历一次就执行一次传递的匿名函数
- 匿名函数中有三个可选参数,分别是 item、index、array
- item 每一项元素
- index 当前被遍历元素的索引值
- array 该数组本身
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let arr=[11,52,47,88,76,84]
let sum=0;
// for循环
// for(let i=0;i<arr.length;i++){
// sun += arr[i]
// }
// console.log(sum);
arr.forEach((value)=>{
sum +=value
})
console.log(sum);
</script>
</body>
</html>
some()
遍历数组,判断元素是否符合判断条件,若有一个符合就返回 true,若都不符合则返回 false,匿名函数的返回值就是判断条件
- 不改变原数组
- 返回值:布尔值 true || false
- 参数:function (匿名函数)
- item:每一项元素
参数解释
- 每次遍历都会执行一次匿名函数,如果有一个匿名函数的返回值为 true,即有一个符合条件,那么 some()会返回 true
- 若都为 false,才会返回 false
<script>
let arr=[15,78,97,78784,1112,54,-7]
// 判断数组是否有负数 有负数是打印是true 没有负数打印的是false
let arr1=arr.some((item)=>{
return item>0
})
console.log(arr1);
every()
遍历数组,判断元素是否符合判断条件,如果都符合则返回 true,否则返回 false,匿名函数的返回值就是判断条件
- 不改变原数组
- 返回值:布尔值 true || false
- 参数:function (匿名函数)
- item:每一项元素
参数解释
- 每次遍历都会执行一次匿名函数,如果所有匿名函数的返回值都为true,也就是所有元素都符合判断条件,那么 every()会返回 true
- 只要有一个为 false,即只要有一个不符合,就会返回 false
let arr2=[78,98,74,51,37]
// 判断所有的元素是否都是正数 当所有的元素都符合条件是返回值是true 只要有一个不符合条件返回值为false
let arr3=arr2.every((item)=>{
return item>0
})
console.log(arr3);
findindex()
获取符合条件的第一个元素位置(下标)。 返回值:符合则返回元素下标,不符合则返回-1。
let arr = [
{ name: '周万方', age: 18 },
{ naem: '战神', age: 20 },
{ name: '易打', age: 2 }
]
let res = arr.findIndex((item) => {
return item.age > 18
})
console.log(res);
reduce()
迭代数组
不改变原数组
返回值:迭代完成的结果
参数:function (匿名函数)、initial (初始值)
prev:上一次遍历函数的返回值 (上一次迭代结果)
item:当前元素
index:当前索引值
array:原数组本身
参数解释
initial 为迭代的初始值,可以理解为第一次迭代时 prev 的值
如果 initial 不传,则默认从索引为 1 的元素开始遍历,且第一次迭代时 prev 默认为第 0 项元素
let arr1=[45,68,78,99]
let res1=arr1.reduce((sum,value)=>{
return sum +=value
},0)
console.log(res1);