JS数组的filter、every、some、map、forEach、flat的作用

777 阅读1分钟

every

every 不会对原数组进行修改,它的返回值是一个布尔值。只要所有的元素都具备某特性后,才会返回 true,只要有一个不满足,就会结束循环,返回 false

every 用法

let list = [2, 4, 6, 8, 10]
let bool = list.every((item, index, list) => {
    return item % 2 === 0
})

some

some 和 every 刚好相反,只要数组有一个元素满足条件,循环就会结束并返回 true。遍历到最后都没有一个元素满足条件,就会返回 false

some 用法

let list = [2, 4, 6, 8, 10]
let bool = list.some((item, index, list) => {
    return item === 2
})

filter

filter 方法不会对原数组进行修改,会返回一个新的数组,新的数组中,每个元素都是符合条件的数据项。

filter 用法

let list = ['abc', 'abcd', 'abcde', 'abcdef', 'abcdefg']
let res = list.filter((item, index, list) => {
    return item.length > 4
})
res => ['abcde', 'abcdef', 'abcdefg']

map

map 方法不会改变原数组,会返回一个新数组,新数组中的元素为原始数据中的每个元素调用函数处理后得到的结果。

map 用法

let list = [2, 4, 6, 8, 10]
let res = list.map((item, index, list) => {
    item = item / 2
    return item
})
res => [1, 2, 3, 4, 5]

forEach

forEach 可以改变原数组,没有返回值,不支持 break

forEach 用法

let list = [2, 4, 6, 8, 10]
list.forEach((item, index, list) => {
    item = item / 2  // 这种方法不能修改原数组
    list[index] = item / 2 // 此方法会修改原数组
})
list => [1, 2, 3, 4, 5]

flat

扁平化数组,多维数组变一维

图片.png