1.concat(),合并数组,并返回合并之后的数据
tips:不会修改原数组,返回新数组;
concat() 的某个参数本身是一个数组,则会将该数组的元素衔接到 arr 中
let arr = [1, 2, 3]
let arr2 = [6, 7, 8, 9]
let arr3 = [4, [5, [7, 8]]]
let result = arr.concat(arr2)
let result2 = arr.concat(4, 5)
let result3 = arr.concat(arr3)
console.log(result); //[1, 2, 3, 6, 7, 8, 9]
console.log(result2); //[1, 2, 3, 4, 5]
console.log(result3); //[1, 2, 3, 4, Array(2)]
2.sort(),排序(字符规则),返回结果,会改变原数组
(1)默认按照数组元素第一位的ASCII码从小到大排列,并不是从大到小!
let arr = [9, 311, 81, 1, 2, 8, 3, 4, 9, 2, 1, 6, 7]
let result = arr.sort()
console.log(arr) //直接修改原数组
console.log(result); //[1, 1, 2, 2, 3, 311, 4, 6, 7, 8, 81, 9, 9]
(2)设置回调函数,即可实现升序降序的实现
let arr = [9, 311, 81, 1, 2, 8, 3, 4, 9, 2, 1, 6, 7]
let result = arr.sort(function (a, b) {
return a - b
})
console.log(arr) //[1, 1, 2, 2, 3, 4, 6, 7, 8, 9, 9, 81, 311]
console.log(result); //[1, 1, 2, 2, 3, 4, 6, 7, 8, 9, 9, 81, 311]
result = arr.sort(function (a, b) {
return b - a
})
console.log(arr) //[311, 81, 9, 9, 8, 7, 6, 4, 3, 2, 2, 1, 1]
console.log(result); //[311, 81, 9, 9, 8, 7, 6, 4, 3, 2, 2, 1, 1]
3.forEach(),参数为回调函数,会遍历数组所有的项,回调函数接受三个参数,分别为value,index,self; forEach返回值undefind
let arr = [1, 2, 3, 4, 5]
let result = arr.forEach((item, index, self) => {
console.log(item, index, self)
// 参数item: 数组中每一项的内容
// 参数index: 数组索引
// 参数a: 指的是数组本身
})
console.log(result); // undefined
4.map() 同forEach,同时回调函数返回数据,组成新数组由map返回,不改变原数组
let arr = [1, 2, 3, 4, 5]
let result = arr.map((item) => {
return item + 1
})
console.log(result) // [2, 3, 4, 5, 6]
console.log(arr) //原数组不变[1, 2, 3, 4, 5]
5.filter() 同forEach,同时回调函数返回布尔值,为true的数据组成新数组由filter返回,不改变原数组
tips:返回是过滤的数组喔~
let arr = [1, 2, 3, 4, 5]
let result = arr.filter((item) => {
return item > 2 //true的时候返回item,false不返回
})
console.log(result) // 返回筛选结果[3, 4, 5]
console.log(arr) //原数组不变[1, 2, 3, 4, 5]
6..every(),同forEach,同时回调函数返回布尔值,全部为true,由every返回true,有一项不满足则返回false
let arr = [1, 2, 3, 4, 5]
let result = arr.every((item) => {
return item >= 1
})
console.log(result) // 全部满足条件返回true
console.log(arr) //原数组不变[1, 2, 3, 4, 5]
7.some(),同forEach,同时回调函数返回布尔值,只要有一个为true,由some返回true,不会改变原数组
8.reduce(),归并,reduce的第2个参数是可选的,也就是初始值是可选的。当不指定初始值时,它将使用数组的第一个元素作为初始值。函数里面的 index 是当前 value 在数组中的索引。当不传入初始值的时候,index 是从 1 开始的,总的循环次数比数组长度少1。当传入初始值的时候,index 是从 0 也就是第一个元素开始,数组有多长就会遍历几次。
let arr = [1, 2, 3, 4, 5]
let result = arr.reduce((total, value, index, arr) => {
return total + value //total表示上一次return的值
}, 0) //value表示当前遍历到的值
console.log(result); //15 //index当前索引
console.log(arr); //[1, 2, 3, 4, 5] //arr当前数组
9.reduceRight(),reduceRight() 的工作原理和 reduce() 一样,不同的是它按照数组索引从高到低(从右到左)处理数组。