zoukankan      html  css  js  c++  java
  • js数组操作方法

    数组的操作方法在js中可谓是诸子百家,各种某乱的方法让人眼花缭乱,有时候就会分不清什么是自带的什么是曾今写的api了

    数组的增删

    1 . push() , pop()  和 shift() unshift() ;

    效果:

    push是最常用的了,屁股上追加 , pop()相反在屁股上扣掉一个

    shift和unshift就相反是在头部开刀了 , 他们除了push()都用的不多,主要因为只能一个一个操作,而且只能在头尾

    返回值

    push和unshift是头尾增加后返回长度,

    pop和shift返回他们删除的值

    2 . splice() slice() concat()

    这个方法是删除用的,但是不是删除头尾固定的一个,而是想删除哪一个就哪一个。

    效果:

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.splice(1,2))
    console.log(arr)
    

    删除俩个参数,从arr[1]开始,就是100,104被删掉了

    splice接受第更多参数,就变成是插入的数组元素,就像下边的concat一样插入多个

    slice接受两个参数,表示从哪到哪的被截取下来

    concat() 里边可以继续写数组 如concat(6,1,2,4);

    就会把数组拼起来,但依然只是放在屁股上的,只不过放连续好几个而已

    返回值

    splice()为删掉的值

    concat()为拼合后的新数组

     注意:数组有的方法不会改变原来数组,如slice concat会返回新数组,但是不会改变原来的数组

     

    数组的变形

     join() split()

    join可以把数组变成字符串,接受参数返回字符串,数组本身不变

    split接受参数,返回字符串以参数分割的数组

    数组的排序

    sort() reverse()

    sort()接受参数为排序方法,例如sort(function(){

      return a-b

    })  返回新数组

     reverse()不接受参数,数组被反转。返回新数组

    注意:他们都会改变数组原来的形式

    ES5新方法

    es5新加了一些厉害了的东西,例如find,findIndex,reduce,forEach,every,map, filter,说起来比较多,但是都不复杂,官方文档讲的十分清楚啦。

    forEach(callback[,thisArg]),

    map(callback[,thisArg])

    forEach接收一个回调来操作每一个元素callback又接收三个参数,元素value,index,调用forEach的array [,thisArg]意思是选填的参数,代表callback中的this

    没错,他就是和jquery的each一样,注意:参数顺序不同

    map和forEach一样,只不过每次操作一个元素可以有个返回值,然后构成新数组

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.map(function(){
        return 1
    }))

    find(callback[,thisArg]),

    findIndex(callback[,thisArg])

    方法返回数组中满足提供的测试函数的第一个元素的值。它和forEach接收的参数一样一样的。

    例如:

    function isBigEnough(element) {
      return element >= 15;
    }
    
    [12, 5, 8, 130, 44].find(isBigEnough); // 130
    function isBigEnough(element) {
      return element >= 15;
    }
    
    [12, 5, 8, 130, 44].findIndex(isBigEnough); // 3

    两个区别就是一个返回第一个满足要求的元素索引,一个返回元素值 

    every(callback[,thisArg]),

    filter(callback[,thisArg]),

    some(callback[,thisArg])

     这三个玩意是用来过滤的,every()some()返回true,false,前者返回是否全部通过,后者返回是否有人通过

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.some(function(element){
        return element > 30
    }))

     //true,表示有东西通过

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.every(function(element){
        return element > 30
    }))

     //false,并非全部通过

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.filter(function(element){
        return element > 30
    }))

    //[100, 104, 55]  //通过元素构成的新数组

    reduce(callback,init)和reduceRight(callback,init)

    var arr = [ 29 , 100 , 104 , 55] ;
    console.log(arr.reduce(function(a,b){
        console.log(a,b)
        return a-b
    },0))

    以init为初始值,进行init , 元素1 ,然后 元素1 ,元素2这样的方法进行遍历迭代回掉运算,

    init也可没有,就直接元素1,元素2然后元素2,元素3这样遍历

    reduceRight就不解释了

     include(value[,fromIndex])

    数组是否包含value,是返回0,不是返回-1

    这些的兼容还不错,include不兼容ie,find不兼容opera其他的都差不多

  • 相关阅读:
    微信机器人-定制消息
    Python实现微信祝福语自动发送
    日常使用 ADB 命令
    python 中的三种等待方式
    Appium自动化测试之环境安装
    Charles 模拟弱网
    Navicat连接MySQL报错-2059
    requests高级用法
    requests基本用法
    Monkey测试环境搭建
  • 原文地址:https://www.cnblogs.com/sowhite/p/6387243.html
Copyright © 2011-2022 走看看