JS第七节 数组方法 排序

这篇博客详细介绍了JavaScript中数组的各种操作方法,包括reverse、join、concat、slice、splice以及删除元素的方法。同时,文章对比了不同字符串拼接方式的效率,指出使用数组join在大量拼接时更优。此外,还提到了如何检测数组,数组的toString方法,以及排序函数的工作原理。最后,讨论了数组下标的特点和排序功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.数组的操作方法
1.reverse(): 对原数组进行反转
    var a1=[23,12,56,34]
    a1.reverse() --- [34,56,12,34]

2.join: 指定分隔符,将数组转换为字符串,生成新的字符串
    var a1="he,ll,oo,mm"
    字符串转数组
    var a2 = a1.split(",")
    数组转字符串
    a2.join("")     helloomm
    a2.join("3")    he3ll3oo3mm

3.concat: 连接数组,将数据添加到数组的末尾
    不修改原数组,生成新的数组
    只能打开一维数组,不会打开数组中包含的数组
        a1=[1,2,3]
        a2=[4,5,6]
        console.log(a1.concat(a2));                  // [1,2,3,4,5,6]
        console.log(a1.concat(55,66));               // [1,2,3,55,66]
        console.log(a1.concat([33,88],[44,77]));     // [1,2,3,33,88,44,77]
        console.log(a1.concat([[11,22]],[33,44],"abc"));// [1,2,3,[11,22],33,44,"abc"]

4.slice  截取子数组
(1)不修改原数组,生成新的数组
(2)a1.slice(2,4)        起始包含,终止不包含
(3)a1.slice(2)          起始到末尾
(4)a1.slice(-4,-2)      负数,从右到左从-1开始截取

    a1=[1,2,3,4,5,6,7]
    console.log(a1)                 // [12,34,45,67,89]
    console.log(a1.slice(2,4))      // [45,67]
    console.log(a1.slice(2))        // [45,67,89]
    console.log(a1.slice(2,10))     // [45,67,89]
    console.log(a1.slice(-4,-2))    // [34,45]
    
5.splice: 增加和删除数组元素 -- (修改原数组,返回被删除的元素)
splice(arg1,arg2,arg3...)
       arg1 -- 起始位置
       arg2 -- 被删除的元素个数
       arg3及后面所有参数 -- 指要插入的元素
    
    a1=[1,2,3,4,5,6,7]
    a1.splice(1,2,3,4,5)  
    a1.splice(2)            如只有一个参数,从起始位置删除后面所有的元素
    a1.splice(2,2)        
    a1.splice(2,0)        
    a1.splice(2,0,0,0,0)  
    a1.splice(6,2,3,4)    
    a1.splice(-2,-3,6,7,8)  如果第一个参数为负数,则从右到左查找
                            如果第二个参数为负数,按0处理


6.数组删除
(1)splice
(2)delele: 仅删除元素本身,不删除元素的空间,不改变数组大小
    var a1 = [3,4,5]
    delete a1[0]  空格,4,5
    

二.字符串拼接操作效率
   var s1="hello"
      var sums1=""
      var arr1=[]
      var begintime=new Date().getMilliseconds()
//      for(var i=0;i<1000000;i++){
//          sums1=sums1+s1
//      }
//      for(var i=0;i<1000000;i++){
//            sums1.concat(s1)
//        }
        for(i=0;i<1000000;i++){
            arr1.push(s1)
        }
        arr1.join("")

      var endtime=new Date().getMilliseconds()
      console.log(endtime-begintime)


三.数组检测
    var  a1 = [2,3,4]
    typeof(a1)                      object
    1.Array.isArray(a1)             true
    2.if(a1 instanceof Array){}     true
    3.a1.constructor==Array         true

四.数组的toString()
    所有对象都有toString()  valueof()   toLocalstring()
    toString():返回数组中每个值的字符串形式,以逗号分隔进行拼接
               数组转字符串
    
    var  a1 = [3,4,5]
    console.log(a1.toString())          //3,4,5

扩展: 
p1={"name":"zs"}
console.log(p1.toString())

五.数组下标
1.a1[0]  0--下标
2.范围  大于0,小于(2^32)-1 整数
3.如果下标是负数,浮点数,布尔型等,js会自动将其转换为字符串
    var a1=[4,5,6,7]
    console.log(a1[true]);  //undefined
    console.log(a1[-2]);    //undefined
    console.log(a1[2.3]);   //undefined
4.下标是可以不断递增的表达式
    var a1 = []
    for(var i=0;i<10;i++){
        a1[i++]=i
    }
    console.log(a1) //[1,空,3,空,5,空,7,空,9]

六.排序
    数组.sort(比较函数)
    比较函数--具有两个参数 f1(a,b)
        函数只判断返回值
        返回值大于0     a排在b的后面
        返回值小于0     a排在b的前面
        返回值等于0     a,b不动

1.var a1=[23,4,5,12,78,16]
    console.log(a1.sort()); //[12, 16, 23, 4, 5, 78]

2.var a1=[23,4,5,12,78,16]
    function f1(a,b){
        // return a-b    // a在b的后面
        if(a-b<0){
        return 1        //a在b后面
        }else if(a-b>0){
        return -1       //a在b前面
        }else{
        return 0        //a,b不动
    }
}
console.log(a1.sort(f1)) //[4, 5, 12, 16, 23, 78]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值