JavaScript数组中的22个常用方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数组总共有22种方法,本文将其分为对象继承方法、数组转换方法、栈和队列方法、数组排序方法、数组拼接方法、创建子数组方法、数组删改方法、数组位置方法、数组归并方法和数组迭代方法共10类来进行详细介绍
对象继承方法
数组是一种特殊的对象,继承了对象Object的toString()、toLocaleString()和valueOf()方
法【toString()】toString()方法返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串[注意]该方法的返回值与不使用任何参数调用join()方法返回的字符串相同
由于alert()要接收字符串参数,它会在后台调用toString()方法,会得到与toString()方法相同的结果
【toLocaleString()】toLocaleString()是toString()方法的本地化版本,它经常也会返回与toString()方法相同的值,但也不总是如此。因为,它调用元素的是toLocaleString()方法将每个数组元素转化为字符串
如果数组中的某一项的值是null或者undefined,则该值在toLocaleString()和toString()方法返回的结果中以空字符串表示
【valueOf()】valueOf()方法返回数组对象本身
数组转换方法
【join()】Array.join()方法是String.split()方法的逆向操作,后者是将字符串分割成若干块来创建一个数组数组继承的toLocaleString()和toString()方法,在默认情况下都会以逗号分隔的字符形式返回数组项;而join()方法可以使用不同的分隔符来构建这个字符串,join()方法只接收一个参数,用作分隔符的字符串,然后返回包含所有数组项的字符串如果不给join()方法传入任何值,则使用逗号作为分隔符
若join()方法的参数是undefined,标准浏览器以逗号为分隔符返回字符串,而IE7-浏览器以’undefined’为分隔符返回字符串
如果数组中的某一项的值是null或者undefined,则该值在join()方法返回的结果中以空字符串表示
该方法也可以用于类数组对象上
[注意]若对象没有length属性,就不是类数组,也就不能调用数组的方法
栈和队列方法
push()和pop()方法允许将数组当作栈来使用。unshift()和shift()方法的行为非常类似于push()和pop(),不一样的是前者是在数组的头部而非尾部进行元素的插入和删除操作
栈是一种LIFO(Last-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部。javascript为数组专门提供了push()和pop()方法,以便实现类似栈的行为
队列数据结构的访问规则是FIFO(first-in-first-out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。结合使用shift()和push()方法,可以像使用队列一样使用数组
【push()】
push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。所以,该数组会改变原数组
如果需要合并两个数组,可以使用apply方法
[注意]如果使用call方法,则会把数组b整体看成一个参数
push()方法也可以向对象中添加元素,添加后的对象变成类数组对象,即新加入元素的键对应数组的索引,并且对象有一个length属性
【pop()】
pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。所以,该数组会改变原数组
对空数组使用pop()方法,不会报错,而是返回undefined
【shift()】
shift()方法移除数组中的第一个项并返回该项,同时数组的长度减1。所以,该数组会改变原数组
对空数组使用shift()方法,不会报错,而是返回undefined
【unshift()】
unshift()方法在数组前端添加任意个项并返回新数组长度。所以,该数组会改变原数组
当使用多个参数调用unshift()时,参数是一次性插入的而非一次一个地插入。这意味着最终的数组中插入的元素的顺序和它们在参数列表中的顺序一致
[注意]在IE7-浏览器中,unshift()方法返回的总是undefined
数组排序方法
数组中存在两个可以直接用来重排序的方法: reverse()和sort()
【reverse()】
reverse()方法用于反转数组的顺序,返回经过排序之后的数组;而原数组顺序也发生改变
【sort()】
默认情况下,sort()方法按字符串升序排列数组项,sort方法会调用每个数组项的toString()方法,然后比较得到的字符串排序,返回经过排序之后的数组,而原数组顺序也发生改变
如果数组包含undefined元素,它们会被排到数组的尾部
sort()方法可以接受一个比较函数作为参数,以便指定哪个值在哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数
对于数值类型或valueOf()方法会返回数值类型的对象类型,比较函数可以简化
如果对一个字符串数组执行不区分大小写的字母表排序,比较函数首先将参数转化为小写字符串再开始比较
【tips】使用sort()方法创建一个随机数组
数组拼接方法
【concat()】
concat()方法基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。所以concat()不影响原数组
如果不给concat()方法传递参数时,它只是复制当前的数组;如果参数是一个或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中;如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾
如果不提供参数,concat()方法返回当前数组的一个浅拷贝。所谓“浅拷贝”,指的是如果数组成员包括复合类型的值(比如对象),则新数组拷贝的是该值的引用