js数组方法map()、filter()、some()、every()、find()
1.map
遍历数组每个元素,并回调操作,需要返回值,
return的是数组的每一项,返回新的数组,不改变原数组。
- 示例1
let arr = [1,2,3,4,5]
let newArr = arr.map((num) => num * 2)
//newArr: [2,4,6,8,10]
- 示例2:给数组里的每一项添加一个属性
let arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]
let newArr = arr.map((item) => {
return{
id: item.id,
name: item.name,
// 给数组里每一项添加age
age: 20
}
})
2.filter
过滤通过条件的元素组成一个新的数组。
let arr = [{ id: 1, name: 'vs' }, { id: 2, name: 'wb' }, { id: 3, name: 'ls' }]
let newArr = arr.filter((item, index) => {
// 满足 item.id > 1 的项都可以返回
return item.id > 1
})
console.log(newArr);
//简写
let arr = [{ id: 1, name: 'vs' }, { id: 2, name: 'wb' }, { id: 3, name: 'ls' }]
let newArr = arr.filter(item => item.id > 1)
console.log(newArr);
经常使用箭头函数简写,箭头函数的常用简写规则如下:
1.单个参数时,可以省略参数的括号
(param) => { ... } // 普通写法 param => { ... } // 简写
2.单个表达式时,可以省略大括号和 return 关键字
(param) => { return expression; } // 普通写法 param => expression; // 简写
3.如果箭头函数体内只有一行代码,可以省略大括号
(param) => { singleLineStatement; } // 普通写法 param => singleLineStatement; // 简写
4.箭头函数的返回值是对象时,需要使用小括号将对象包裹起来,以避免与函数体的大括号混淆
() => ({ key: value }) // 返回对象的简写
3.find
用于查找数组中是否有满足条件的元素,当找到第一个满足条件的元素时,直接返回该元素,否则返回
undefined,需要返回值。
let arr = [{id:1,name:'a'},{id:2,name:'b'},{id:2,name:'c'},{id:3,name:'d'}]
let arr1 = arr.find(item => item.id == 2)//{id:2,name:'b'}
4.every
遍历数组是否每个元素都符合条件,返回布尔值(全部符合要求返回true,否则返回false),需要返回值。
let arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]
let isAlltrue = arr.every(() => {return item.id == 1})//false
可以简写为
let isAlltrue = arr.every(item => item.id == 1)
5.some
遍历数组中是否有符合条件的函数,有一个符合条件就返回true,否则返回false。
let arr = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]
let newArr = arr.every(() => {return item.id == 1})//true
6.join
用于将数组中的所有元素连接成一个字符串,并返回这个字符串。元素之间可以插入分隔符。
let arr = [a,b,c].join(",");
console.log(arr);//a,b,c