数组一些常用的方法(es5+es6)

1、push

  • 向数组末尾添加一个或多个元素
  • 返回新数组的长度
  • let arr=[1,2,3]
        arr.push(4,5)
        console.log(arr)//[1, 2, 3, 4, 5]

2、unshift()

  • 向数组的开头添加一个或多个元素
  • 返回新数组的长度

  •  

3、pop

  • 删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
  • 返回被删除的元素
  • let arr=[1,2,3,4,5]

    arr.pop()

    console.log(arr)

    //[1, 2, 3, 4]

4、shift()

  • 把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
  • 返回第一个元素的值
  • let arr=[1,2,3,4,5]

    arr.shift()

    console.log(arr)

    //[ 2, 3, 4,5]

 

5、从数组中连续删除、插入数据:splice()

  • splice(1,2,3),1:起始下标,2:连续删除多少项(为0则不删除),
    3:插入的数据(为0则不插入)
  • 返回被删除的元素
  • let arr=[1,2,3,4,5]

    arr.splice(1,1,"2")

    console.log(arr)

    //[1, "2", 3, 4, 5]

6、 数组转字符串:join()

  • 把数组中所有元素放入一个字符串
  • 返回字符串
  • let arr=[1,2,3,4,5]

    console.log(arr.join("+"))

    //"1+2+3+4+5"

7、数组排序:sort()

  • 对数组元素进行排序
  • 返回该数组
  • let arr=[2,1,3,5,4]

    console.log(arr.sort())

    //[1, 2, 3, 4, 5,]

 

8、数组颠倒:reverse()

  • 颠倒数组中元素的顺序
  • 返回该数组
  • let arr=["Mike","Doinb","Uzi","Mary","Faker","ClearLove"] console.log(arr.sort().reverse())

    // ["Uzi", "Mike", "Mary", "Faker", "Doinb", "ClearLove"]

 

9、数组抽取:slice()

  • slice(1,2),1:起始下标,2:结束位置(若为0则返回下标后所有元素)
  • 从已有的数组中返回选定的元素
  • 返回一个新数组
  • let arr=[1,2,3,4,5]

    console.log(arr.slice(2))

    //[3, 4, 5]

 

let arr=[1,2,3,4,5]

console.log(arr.slice(2,4))

// [3, 4]

 

 

10、数组合并:concat()

  • 连接两个或多个数组
  • 返回被连接数组的一个副本
  •  let arr1=["RNG","EDG"]
        let arr2=["Uzi","ClearLove"]
        let arr3=["TOP","SKT"]
        console.log(arr1.concat(arr2,arr3))
    // ["RNG", "EDG", "Uzi", "ClearLove", "TOP", "SKT"]

11、数组转为字符串:toString()

  • 把数组转为字符串
  • 返回数组的字符串形式
  • let arr=[1,2,3,4,5]

    console.log(arr.toString())

    //1,2,3,4,5

 

 (ES5中数组常用方法)

1、forEach()

从头至尾遍历数组,为每个元素调用指定的函数。
forEach有三个参数(数组元素,索引,数组本身)。

    const data = [1, 2, 3, 4, 5];  //要求和的数组
    let sum = 0;     //初始为0
    
    data.forEach( value => sum+=value) //将每个值累加到sum上
    console.log(sum)           //=>15
    
    data.forEach((v,i,a)=> a[i]=v+1)
    console.log(data)      //=>[2,3,4,5,6]
 

注:forEach无法在所有元素传递给调用函数之前终止遍历(无法使用break),如果要使用就使用try。
返回值:无。

forEach无法通过正常流程(如break)终止循环,但可通过抛出异常的方式实现终止循环

var arr = [1,2,3,4,5,6]
try{
  arr.forEach((item) => {
        if (item === 3) {
            throw new Error('End Loop')
        }
      console.log(item)
  })
} catch (e) {
    if(e.message === 'End Loop') throw e
}

将只输出 1 2

注意:在catch语句块中加了if(e.message === 'End Loop') throw e这句代码会在控制台报一个错误,这个错误是try语句块中抛出的

如果不想看到这个报错,将if(e.message === 'End Loop') throw e这一句删除就行

 

2、map(映射)

map()方法将调用的数组每个元素传递给指定的函数,并返回一个数组。

    let a=[1,2,3]
    let b=a.map(x)  return x*x )
    console.log(b)        //=>[1,4,9]
   /=============================/
    let a=[1,2,3]
    let b=a.map(i=> return i )
    console.log(b)        //=>[1,2,3]
注:map返回的是新数组,不修改调用的数组。如果是稀疏数组,返回的也是相同稀疏数组。
返回值:有,新的数组。

 

3、filtter(过滤)

filtter()遍历数组,过滤出来符合条件的元素,放到一个新数组里面,如果没有就返回空。

    let a=[1,2,3,4,5]
    let b=a.filter(x=> return x<3 )
    console.log(b)        //=>[1,2]
    
    let c=a.filter(x=> return x>5 )
    console.log(c)        //=>[]
 

4、every(所有)和some(存在)

every()方法就像数学中的“所有”,针对所有符合条件的返回true否则返回false。

    let a=[1,2,3,4,5]
    let b=a.every(x=> return x<3)
    console.log(b)        //=>false
    
    let c=a.every(x=> x<6)
    console.log(c)        //=>true
 

 

some()方法就像数学中的“存在”,但数组中至少存在一个元素符合判定条件则返回true,
否则false(一个都没有)。

    let a=[1,2,3,4,5]
    let b=a.some(x=> return x<3 )
    console.log(b)        //=>true
    
    let c=a.some(x=> return x<1 )
    console.log(c)        //=>false
 

 

:一旦every()和some()确定该返回什么值它们就会停止遍历数组。
every()在判定数组时,第一次返回false后就返回false,如果判定一直返回true,他将遍历整个数组。
some()相反,第一次返回true就返回true,如果判定为false就遍历整个数组。
按照数学惯例,在空数组上调用时,every()返回true,some()返回false。
返回值:true或者false。

5、reduce()

6、indexOf()和lastIndexOf()

indexOf()和lastIndexOf()搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或者如果没有找到就返回-1。
indexOf()从头至尾搜索,lastIndexOf()则相反。

    let a=[1,2,3,4,5,4,3,2,1]
    let b=  a.indexOf(3)
    let c=  a.lastIndexOf(3)
    console.log(b)        //=>2
    console.log(c)        //=>6
 

:indexOf()和lastIndexOf()不接受函数作为其参数。
返回值:第一个元素的索引。 

是否会改变原数组

会改变:push(),pop(),shift(),unshift() ,splice(),sort(),reverse()。
不变:concat(),split(),slice()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值