前端JS常用数组方法

  • 栈队列方法
    将数组模拟为栈或队列的方法。
    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
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值