美文网首页
JavaScript 数组方法 笔记

JavaScript 数组方法 笔记

作者: FocusOn_ | 来源:发表于2018-07-11 17:50 被阅读1次

    JavaScript 数组创建

    一维数组

    var arr = []   // 空数组
    var arr = [1,2,3,4]  // 数组字面量
    
    var arr = new Array()   // 空数组
    arr[0] = 1
    arr[1] = 2
    
    var arr = new Array(20) //创建一个有20个空间大小的数组 
    var arr = new Array(1,2,3,4) //创建数组,包含四个元素
    

    二维数组

    var arr = new Array()
    arr[0] = [1,2,3]
    arr[1] = [3,2,1]
    // 一般多维数组会用循环(比如for)来构建
    

    数组方法

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

    arr.join(separator)——连接
    返回以separator为间隔的字符串,原数组不变

    arr.join("-")   //返回值1-2-3-4-5
    

    arr.push(item,[items])——末尾添加
    可输入多个元素 ,修改数组本身,返回 修改后数组长度

    arr.push(4,3,2,1)   //返回9
    

    arr.pop()——删除末尾元素
    无参数,返回被删除元素,数组长度改变

    arr.pop() // 返回 5
    

    arr.shift()——删除第一个元素
    返回被删除元素,数组长度改变

    arr.shift()  // 返回1
    

    arr.unshift(item,[items])——数组首位添加元素
    可添加多个元素,返回增加后的数组长度

    arr.unshift(-1,0)  // 返回7
    

    arr.reverse()——反转数组
    返回被反转顺序的数组,原数组改变

    arr.reverse()  //返回[ 5, 4, 3, 2, 1 ]
    

    arr.concat(items,[items])——连接元素
    参数任意,无参数时返回原数组副本,否则将参数添加进数组副本末尾并返回该副本,原数组不变
    注意:若参数有数组,一位数组将被划分为独立的项再进行添加,二维数组的情况只有第一层数组会被拆分,第二层数组以数组的形式被添加

    arr.concat()  //返回[ 5, 4, 3, 2, 1 ]
    arr.contact("last",["add","and",[11,11,11]])  
    //返回   [ 1, 2, 3, 4, 5, 'last', 'add', 'and', [ 11, 11, 11] ]
    

    arr.sort([compareFunction])——排序
    无参数时默认升序排序,添加compareFunction比较函数,函数中将两个值进行比较,第一个值位置在前时返回负数,相等返回0,靠后返回正数。

    降序(示例)
    function compareFunction(value1,value2){
      if(value1 > value2) return -1
      if(value1 < value2) return 1
      if(value1 == value2) return 0
    }
    arr.sort(compareFunction)  //返回[ 5, 4, 3, 2, 1 ]
    

    arr.slice(startIndex,endIndex)——截取数组
    截取开始下标和结束下标包含的项,不包括结束下标的项,省略结束下标参数时默认截取到最后一个字符串
    结束下标为负时,设结束下标为-1,则截取的最后一个数的位置是倒数第2个(2 = |-1|+1)

    arr.slice(1)     //返回[ 2, 3, 4, 5 ]
    arr.slice(1,4)     //返回[ 2, 3, 4 ]
    arr.slice(1,-1) //返回[ 2, 3, 4 ]
    

    arr.splice()——切片——删除、插入、替换
    始终返回被删除的项
    删除——arr.splice(stratIndex,length) 删除从下标为startIndex开始的length个项

    arr.splice(0,2) //删除前两项  返回[ 1, 2 ]
    

    插入——arr.splice(start,0,[items])——在start处添加【items】,删除0项

    arr.splice(1,0,-1,-1) //在第二位添加两个项,-1,返回[]
    

    替换——在被删除的地方插入新值就可以了arr.splice(start,length,[items])

    arr.splice(0,2,-1,-1)  //
    

    arr.indexOf(item,start) arr.lastIndexOf(item,start)——查找
    输入要查找的项和开始查找的起点位置索引【可选】,首次匹配成功返回匹配项索引并结束匹配,否则返回-1

    arr.indexOf(5)  //返回4
    

    数组遍历

    forEach
    arr.forEach(function(item,index,arrSelf){})
    无返回值,原数组不变
    给定匿名遍历函数,包含三个参数——每一次遍历的数组项,该项的索引,数组本身

    arr.forEach(function(item,index,arrSelf){
    console.log("index:"+index+"  value:"+item)
    })
    输出:
    index:0  value:1
    index:1  value:2
    index:2  value:3
    index:3  value:4
    index:4  value:5
    

    map
    arr.map(function(item,index){return})**——映射
    遍历数组每一项,每一次返回值组成新的数组,原数组不变

    arr.map(function(item,index){
      console.log("index="+index+"__"+"item="+item)
      return item-1
    })    
    输出
    index=0__item=1
    index=1__item=2
    index=2__item=3
    index=3__item=4
    index=4__item=5
    [ 0, 1, 2, 3, 4 ]
    

    filter
    arr.filter(function(item,index){reutn ture/false})——过滤
    返回满足过滤条件组成的数组,原数组不变

    arr.filter(function(item,index){
        return item>2
    })
    返回[3,4,5]
    

    every()
    arr.every(function(item,index){return true/false}):判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。

    arr.every(function(item,index){
    console.log("index="+index+"__"+"item="+item)
    return item>2
    })
    返回
    index=0__item=1
    false
    

    some
    arr.some(function(item,index){return false/true})
    判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

    arr.some(function(item,index){
    console.log("index="+index+"__"+"item="+item)
    return item>1
    })
    返回
    index=0__item=1
    index=1__item=2
    true
    

    归并
    reduce()和 reduceRight()
    给定一个函数和一个归并基础值,每一次返回的值作为下一次的prevSub

    var sum = arr.reduceRight(function(prevSum, cur, index, array){
    return prevSum * cur;
    },10);
    console.log(sum); //1200
    
    运算过程
    10 * 5 * 4 * 3 * 2* 1 = 1200
    

    相关文章

      网友评论

          本文标题:JavaScript 数组方法 笔记

          本文链接:https://www.haomeiwen.com/subject/uwthpftx.html