• 关于js中的数组


    数组、字符串、数字是一个程序的最基本的组成部分,对于程序员来说,理解他们只是基本操作,今天说说数组

    和其他强类型语言不同,数组可以容纳任何类型的值,字符串、数字、对象,也可以是其他数组(多维数组就是这样用的),并且js的数组可以像对象一样任意拓展(事实上数组就是对象)

    而不像其他强类型语言一样需要预设长度。

     声明数组的方式

    1、var a=[1,2,'b']

    2、var a = new Array(3);//可以不带new,不带new会自动补上

      a[0]=1

      a[1]=2;

      a[2]='b'

    3、var a = new Array(1,2,'b')

    最常用的当然是第一种。

    稀疏数组:稀疏数组就是含有空缺单元的数组,使用时要特别注意,空缺单元默认被定义为undefined,有的时候可能会出现意料不到的后果,比如不同的浏览器对空单元的处理是不一样的

            另外你可以试试以下代码在不同浏览器下的结果

    var a =[ ]; a.length=3; console.log(a)

    var b=new Array(3);   console.log(b);

    var c=[undefined,undefined,undefined]; console.log(c);

    总之,尽量不要用。

    还有一个比较有趣的地方;数组也是对象,所以他们也可以包含键值和属性,但是要注意这些并不会被计算在length中

    var a = [ ]

    a[0]=0; a['text']='Hello'; 

    console.log(a.length)    // 1

    a.text // Hello

    a['text'] //Hello

    另外还有一点,如果键值可以被强制类型转换字符串的话,他就会被当做数字索引来处理。

    这虽然有趣但是尽量不要在数组中使用这种方式,这是对象该做的事,数组是用来存放元素的。

    数组方法

    (1)join()方法:接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串
    (2)push()方法:接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
    (3)pop()方法:从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
    (4)shift()方法:移除数组中第一个项并返回改项,同时将数组长度减1
    (5)unshift()方法:在数组前端添加任意个项并返回新数组的长度
    (6)sort()方法:对数组中的数据进行排序
    (7)concat()方法:可以基于当前数组中的所有项创建一个新数组
    (8)slice()方法:基于当前数组中的一或多个项创建一个新数组
    (9)indexOf()方法:从数组的开头(位置0)开始向后查找
    (10)lastIndexOf():从数组的末尾开始向前查找
    (11)splice()方法:恐怕要算是最强大的数组方法了,它有很多种用法,splice()的主要用途是向数组的中部插入项,但使用这种方法的方式则有如下3种:

        删除:可以删除任意数量的项,只需指定2个参数(要删除的第一项的位置和要删除的项数),例如:splice(0,2)会删除数组中的前两项

        插入:可以向指定位置插入任意数量的项,只需要提供3个参数(起始位置,0(要删除的项数)和要插入的项),例如:splice(2,0,"red","green")会从当前数组的位置2开始插入字符串"red"和"green"

        替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需要提供3个参数(起始位置,要删除的项数和要插入的任意数量的项),例如:splice(2,1,"red","green")会删除当前数组位                             2置                  的项,然后再从位置2开始插入字符串"red"和"green";

    (12)map()方法:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

    (13)filter()方法:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

    具体的可以参考https://www.cnblogs.com/ToNi/p/4267463.html

    类数组

    类数组也就是说不是真正的数组但是十分类似,比如DOM查询返回的节点,比如用来存放函数的参数的arguments对象(ES6废止了)

    这些类数组可以通过下标的方式访问元素,但是没有诸多的数组的方法,这时可以利用数组方法进行转换

    经常用的是slice(...)

    function foo(){

      var arr = Array.prototype.slice.call(arguments);

      arr.push('abc')

      console.log(arr)   

    }

    foo('baz','bar')  //['baz','bar','abc']

    ES6的内置函数Array.from(...)也能实现同样的功能;

  • 相关阅读:
    MVC NonAction属性
    未将对象引用设置到对象的实例
    回调函数callback
    Json详解
    浅谈HTTP中Get与Post的区别
    JQuery $.ajax()方法详解
    C#中Const和Readonly的区别
    全面解释StringBuilder、StringBuffer和String的关系
    基本数据类型的包装类和随机数
    枚举类的使用
  • 原文地址:https://www.cnblogs.com/hui-fly/p/9461740.html
Copyright © 2020-2023  润新知