- 栈队列方法
将数组模拟为栈或队列的方法。
arr.push(param 1),arr.pop()
arr.unshift(param 1),arr.shift()
顾名思义:push和pop是栈操作,unshift和shift是队列操作 - 排序方法
将数组按照一定条件排序的方法。
arr.sort(),arr.reverse()
sort()方法默认按从小到大排序,直接操作原数组,可以在sort中传入一个方法用于自定义排序规则。
reverse()将原数组完全调换位置,直接操作原数组,无参数。
var numbers = [3,6,2,1,9];
numbers.sort((a,b)=>{
return a - b
});
console.log(numbers)
//[1,2,3,6,9]
原理:若a>b,则a-b>0,返回值为真,调换位置,最终数组按升序排列。
- 分割方法
分割方法将会按照一定条件分割数组。
arr.slice(start,end)
arr.splice(start,howmany, item1, item2,[ …])
slice()截取一段数组内容,返回一个新数组,start可以是负数,表示从末尾开始。
splice() 添加或删除数组中的元素,直接操作原数组,howmany如果为0,则是添加元素。
var alpha= ["A", "D", "E", "F"];
fruits.splice(1,0,"B","C");
console.log(fruits)
//[ "A","B","C","D", "E", "F"]
- 遍历方法
遍历方法将会遍历一遍数组。
arr.foreach(item,index,thisArray),arr.map(item,index,thisArray)
arr.filter(item,index,thisArray),arr.some(),arr.every()
arr.reduce()
foreach()方法和map()方法大致类似,foreach()不返回新的数组,map()返回新的数组。
filter()方法用于筛选出数组中满足条件的数据。
some()方法遍历一遍数组,如果有数据满足条件,则返回true,否则返回false。
every()方法遍历一遍数组,如果数组全部数据满足条件,则返回true,否则返回false。
var nums= [11,15,20,35];
console.log(nums.every(function(num){
return num>10}
));
//true
- 稍微高阶一点的方法
展平数组方法:arr.flat(depth)
flat()用于将数组中的depth维数组展平为一维数组,depth默认为1,最多展平2维数组,返回一个新数组。
var nums= [11,15,20,35,[55,65,[75,85]]];
var result = nums.flat();
console.log(result);
//[ 11, 15, 20, 35, 55, 65, [75,85] ]
也可以自己手写一个递归函数展平数组
function flatByForEach(arr) {
const res = []
arr.forEach(item => {
Array.isArray(item) ? res.push(...flatByForEach(item)) : res.push(item)
})
return res
}
console.log(flatByForEach(sourceData))
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
数组遍历中累加方法
arr.reduce(total,currentValue,currentIndex, thisArray)**
arr.reduceRight(total,currentValue,currentIndex, thisArray)
reduce() 方法对数组中的每个元素执行一个自定的回调函数,将其结果汇总为单个返回值。
reduceRight() 方法从右往左对数组中的每个元素执行一个自定的回调函数,将其结果汇总为单个返回值。
参数解释:total是初始值或对上个元素进行回调函数之后的结果值。
var numbers = [65, 44, 12, 4];
let result= numbers.reduce((total,num)=>{
return total + num;
});
console.log(result);
//125