数组及数组的方法和函数

这篇博客详细介绍了JavaScript中的数组操作,包括定义、赋值、遍历、添加删除、反转、转换、排序等方法,并通过实例展示了它们的用法。此外,还探讨了不同字符串拼接方式的性能差异,以及如何检测数组、使用toString方法。最后,讲解了indexOf、forEach、map、filter、reduce、some和every等数组函数的功能和应用场景。
摘要由CSDN通过智能技术生成

学习内容:

一、数组

1.数组的定义
数组是可以用来保存任意类型的数据集合
(1)用构造函数的方式实现
    var a1=new Array()      "空"数组

(2)直接量实现
    var a2=[]               "空"数组

2.数组的数据操作
(1)a1[0]    赋值
    var a1=[]
    a1[0]="hello"

    var a1=["a","b","c"]
    console.log(a1[1])        //b

(2)长度
var a1=new Array(3)   指定长度

3.数组的遍历   数组的下标由0开始
(1)for
    var a1=[23,45,56,78]
    for(var i=0;i<a1.length;i++){
        console.log(a1[i])
    }

(2)for in
    var a1=[23,45,56,78]
    for(var i in a1){
        console.log(a1[i])
    }

4.数组的添加与删除
    push()    入栈,数组尾部增加数据,对原数组进行修改,返回的是修改后的数组长度
    pop()     出栈,删除数组尾部的一个元素,对原数组进行修改,返回的是被删除的元素

    unshift()  在数组的头部增加元素,对原数组进行修改,返回修改后数组的长度
    shift()    删除数组头部的一个元素,对原数组进行修改,返回的是被删除的元素

二、数组的操作方法
1.reverse  对原数组进行反转,不会创建新数组
        var a1=[23,12,56,34]
        console.log(a1)                 //[23,12,56,34]
        console.log(a1.reverse())       //[34,56,12,23]
        console.log(a1)                 //[34,56,12,23]
        
2.join  可以指定分隔符,将数组转换为字符串,生成新的字符串
    var a1="he,ll,oo,mm"
    //字符串转数组
    var a2=a1.split(",")  //[he,ll,oo,mm]

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

4.slice  截取子数组
(1)不修改原数组,生成新的数组
(2)a1.slice(2,4)    起始包含,终止不包含
(3)a1.slice(2)      起始到数组末尾
(4)a1.slice(-4,-2)  负数,由右到左截取
        var a1=[13,34,45,67,89]
        var a2=a1.slice(2,4)      
        console.log(a1)           //[13,34,45,67,89]
        console.log(a2)           //[45,67]
        var a2=a1.slice(2)       
        console.log(a2)          //[45,67,89]
        var a2=a1.slice(2,10)       
        console.log(a2)          //[45,67,89]
        var a2=a1.slice(-4,-2)       
        console.log(a2)          //[34,45]

5.splice  增加和删除数组元素
  splice(arg1,arg2,arg3...)
         arg1---起始位置
         arg2---被删除的元素个数
         arg3及后面所有元素---要插入的元素
    a1[1,2,3,4,5,6,7]
    a2=a1.splice(2) 
    a1---[1,2]   a2---[3,4,5,6,7]
    如只有一个参数,从起始位置删除后面的所有的元素
    修改原数组,返回被删除的元素

    如第一个参数为负数,则从右到左查找,第二个参数为负数,当0处理

6.数组删除
    splice
    delete  仅删除元素的值,不能删除元素的空间,并且没有改变数组的大小
        var a1=[3,4,5]
        delete a1[0]
        console.log(a1)             //[ ,4,5]
        console.log(a1.length)      //3

三、字符串拼接的操作效率
        var s1="hello"
        var sums1=""
        var arr1=[]
        var begintime=new Date().getMilliseconds()
        // for(var i=0;i<10000000;i++){
        //     sums1=sums1+s1    //耗时最多
        // }
        // for(var i=0;i<10000000;i++){
        //     sums1.concat(s1)
        // }
        for(i=0;i<1000000;i++){
        arr1.push(s1)
        }
        arr1.join("")
        var endtime=new Date().getMilliseconds()
        alert(endtime-begintime)
        
**四、数组的检测
    var a1=[2,3,4]
    console.log(typeof(a1))     //object
    1.Array.isArray(a1)         //true
    2.if(a1 instanceof Array){  //true
    }
    3.a1.constructor==Array     //true

五、数组的toString()方法
    所有对象都有toString()  valueOf()  toLocalstring()
    toString() 返回数组中每个值的字符串形式,以","分隔进行拼接   数组转字符串

扩展:
    //p1={"name":"zs"}
    p1={"name":"zs",
    toString:function(){
        return "hello"
    }
    }
    console.log(p1.toString())

六、数组的下标
    var a1=[4,5,6,7]
  1.a1[0]   0---下标  
  2.范围  大于0,小于2的32次幂减1  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.下标是可以不断递增的表达式

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

八、数组函数

1.indexOf() 
返回数组中第一个找到的元素的位置,不存在返回-1

2.forEach       (for循环的一种)
    数组.forEach(function(当前元素值,当前元素索引,数组对象本身){})

3.map  用来对数组的每一项进行遍历
数组.map(function(当前元素值,当前元素索引,数组对象本身){})

*****map和forEach区别
        1.forEach只是遍历,map可以生成新数组
        2.map速度比forEach快
        3.map可以链式操作

4.filter 数据过滤

arr.filter(function(当前元素值,当前元素索引,数组对象){})
        (1)filter返回新数组,不对原数组修改
        (2)对返回"true"的结果过滤,"false"的结果忽略

5.reduce  接收一个函数作为累加器,数组中的每一个值,从左到右开始缩减最终计算为一个值
        arr.filter(function(初始值,当前元素值,当前元素索引,数组对象){},初始值)       初始值可省略,非必要可不加,和函数是并列关系

6.some  判断数组是否有满足条件的元素
(1)arr.some(function(初始值,当前元素值,当前元素索引,数组对象){})
(2)函数内部,返回true,找到了满足条件的元素,则循环结束
            返回false,没找到,循环继续
(3)函数的执行次数不一定等于数组的长度

7.every 检测数组中所有元素是否都满足指定条件
(1)arr.every(function(初始值,当前元素值,当前元素索引,数组对象){})
(2)有一项不满足就返回false,都满足才返回true 
(3)函数的执行次数不一定等于数组的长度 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值