map,filter,some,every都是原数组不受改变,而foreach是在原数组上改变
map:返回新数组,在原数组上进行数据处理,只会在原有数组上元素内容改变,数组长度不变
filter: 返回新数组,在原数组上判断是否满足条件来进行数据过滤,只会在原有数组上长度改变,元素内容不变
some: 返回布尔值(一真则真),在原数组上判断是否满足条件,只要里面元素有一个满足条件则返回true,并且停止遍历
every:返回布尔值(一假则假),在原数组上判断是否满足条件,必须里面元素全部满足条件才会返回true
find: 返回原数组中第一个满足条件的那个元素
下面挨个演示:
map:
// 新数组 = 原数组.map(item => {return..}) item是数组里的每一个元素
// 新数组 = 原数组.map(item => ({})) 如果箭头函数体用括号包裹则自动return括号里面的值到新数组
let arr = [1, 2, 3, 4, 5]
let result = arr.map(item => {
return item + 1;
})
console.log(result) //结果:[2,3,4,5,6]
// map可以用在改变接口返回值的属性名或者改变返回值的结构上
let res = [
// 后端返回接口数据,但是前端需要的是 id 和 value属性名
{
sid: 1,
name: 'xjw'
},
{
sid: 1,
name: 'xjw'
},
{
sid: 1,
name: 'xjw'
},
{
sid: 1,
name: 'xjw'
},
{
sid: 1,
name: 'xjw'
},
]
let lastRes = res.map(item => ({
id: item.sid,
value: item.name
}))
console.log(lastRes)
filter:
// filter:新数组 = 原数组.filter(item => {return 判断条件})
let farr = [1, 2, 3, 4, 5, ]
let flarr = farr.filter(item => {
return item > 2
})
console.log(flarr) //结果:[3,4,5]
some:
// some:一真则真 变量 = 原数组.some(item => {return 判断条件})
let sarr = [1, 2, 3, 45, 6]
let slarr = sarr.some(item => {
return item > 40
})
console.log(slarr) //结果:true
every:
// every:一假则假 变量 = 原数组.every(item => {return 判断条件})
let earr = [1, 2, 3, 45, 6]
let elarr = earr.every(item => {
return item > 40
})
console.log(elarr) //结果:false
find:
// find: 返回满足条件的第一个元素
let fiarr = [1, 2, 3, 4, 5]
let filarr = fiarr.find(item => {
return item > 2
})
console.log(filarr) //结果:3