JavaScript中数组Array方法详解
ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的。
1、Array.join()方法
Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。可以指定一个可选的符号或字符串在生成的字符串中来分隔数组的各个元素。如果不指定分隔符,默认使用逗号。注意:此方法不会改变原始数组
var arr = ['a', 'b', 'c']; console.log(arr.join()); // a,b,c console.log(arr.join(" ")); // a b c console.log(arr.join("")); // abc console.log(arr.join("slf")); // aslfbslfc var arr2 = new Array(10); console.log(arr2.join("-")); // ---------
扩展:Array.join()方法是String.split()方法的逆向操作,后者是将字符串分割成若干块来创建一个数组。
2、Array.reverse()方法
Array.reverse()方法将数组中的元素颠倒顺序,返回逆序的数组。它采取了替换;换句话说,它不通过重新排列的元素创建新的数组,而是在原先的数组中重新排列它们。注意:此方法会改变原始数组。
var arr = ['a', 'b', 'c']; console.log(arr.reverse()); // ['c', 'b', 'a'] console.log(arr); // ['c', 'b', 'a']
3、Array.sort()方法
Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()方法时,数组元素以字母表顺序排序。注意:此方法会改变原始数组。
var arr = ['ba', 'b', 'ac']; console.log(arr.sort()); // ['ac', 'b', 'ba'] console.log(arr); // ['ac', 'b', 'ba']
如果数组包含undefined元素,它们会被排到数组的尾部。
var arr = new Array(4); arr[0] = 'ba';
arr[1] = 'b';
arr[2] = 'zc';
arr[3] = undefined; console.log(arr.sort()); // ['ac', 'b', 'ba', undefined] console.log(arr); // ['ac', 'b', 'ba', undefined]
如果想按照其他方式而非字母表顺序进行数组排序,则必须给sort()方法传递一个比较函数。该函数决定了它的两个参数在排好序的数组中的先后顺序。假设第一个参数在前,比较函数应该返回一个小于0的数值。反之,假设第一个参数在后,函数应该返回一个大于0的数值。并且,假设两个值相等(它们的顺序无关紧要),函数应该返回0。例如,用数值大小而非字母表顺序进行数组排序,代码如下:
var arr = new Array(4); arr[0] = 45;
arr[1] = 12;
arr[2] = 103;
arr[3] = 24; console.log(arr.sort()); // [103, 12, 24 45] console.log(arr.sort(function(a, b){return b-a;})); // [103, 45, 24, 12]
更多有关sort()方法的用法可点击查看JavaScript中数组Array.sort()排序方法详解
4、Array.concat()方法
Array.concat()方法创建并返回一个新数组,它的元素包括调用concat()的原始数组的元素和concat()的每个参数。如果这些参数中的任何一个自身是数组,则连接的是数组的元素,而非数组本身。但要注意,concat()不会递归扁平化数组的数组。注意:此方法
不会修改原始数组。
var arr = ['abc', 'Def', 'BoC', 'FED']; console.log(arr.concat(1, 2)); // ["abc", "Def", "BoC", "FED", 1, 2] console.log(arr.concat(1, 2, [4, 5])); // ["abc", "Def", "BoC", "FED", 1, 2, 4, 5] console.log(arr.concat(1, 2, [4, ['slf', 5]])); // ["abc", "Def", "BoC", "FED", 1, 2, 4, Array[2]] console.log(arr); // ["abc", "Def", "BoC", "FED"]
5、Array.slice()方法
Array.slice()方法返回指定数组的一个片段或子数组。它的两个参数分别指定了片段的开始和结束的位置。返回的数组包含第一个参数指定的位置和所有到第二个参数指定的位置(但不含第二个参数指定的位置)之间的所有数组元素。如果只指定一个参数,返回的数组将包含从开始位置到数组结尾的所有元素。如参数中出现负数,它表示相对于数组中最后一个元素的位置。例如,参数-1指定了最后一个元素,而-3指定了倒数第三个元素。注意,此方法不会修改原始数组。
var arr = ['abc', 'Def', 'BoC', 'FED', 'slf']; console.log(arr.slice(1, 2)); // ["Def"] console.log(arr.slice(3)); // ["FED", 'slf'] console.log(arr.slice(0, -1)); // ['abc', 'Def', 'BoC', 'FED'] console.log(arr.slice(-3, -1)); // ['BoC', 'FED'] console.log(arr); // ['abc', 'Def', 'BoC', 'FED', 'slf']
6、Array.splice()方法
Array.splice()方法是在数组中插入或删除元素的通用方法。注意,splice()和slice()拥有非常相似的名字,但它们的功能却有本质的区别。splice()能够从数组中删除元素、插入元素到数组中或者同时完成这两种操作。在插入或删除点之后的数组元素会根据需要增加或减小它们的索引值,因此数组的其他部分仍然保持连续的。splice()的第一个参数指定了插入和(或)删除的起始位置。第二个参数指定了应该从数组中删除的元素的个数。如果省略第二个参数,从起始点开始到数组结尾的所有元素都将被删除。splice()返回一个由删除元素组成的数组,或者如果没有删除元素就返回一个空数组。注意:此方法会改变原始数组。(区别于concat(), splice()会插入数组本身而非数组的元素。)
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log(arr.splice(7)); // [8, 9] console.log(arr); // [1, 2, 3, 4, 5, 6, 7] console.log(arr.splice(2, 4)); // [3, 4, 5, 6] console.log(arr); // [1, 2, 7] console.log(arr.splice(2, 1, 3, 4, 5, 6)); // [7] console.log(arr); // [1, 2, 3, 4, 5, 6] console.log(arr.splice(3, 2, 3, [1, 2, 3])); // [4, 5] console.log(arr); // [1, 2, 3, [1, 2, 3], 6]
7、Array.push()和Array.pop()方法
push()和pop()方法允许将数组当做栈来使用。push()方法在数组的尾部添加一个或多个元素,并返回数组新的长度。pop()方法则相反:它删除数组的最后一个元素,减小数组长度并返回它删除的值。注意:这两个方法都会修改原始数组。
var arr = [1, 2, 3]; console.log(arr.push(7)); // 4 console.log(arr); // [1, 2, 3, 7] console.log(arr.push([2, 4])); // 5 console.log(arr); // [1, 2, 3, 7, [2, 4]] console.log(arr.pop()); // [2, 4] console.log(arr); // [1, 2, 3, 7]
8、Array.unshift()和Array.shift()方法
unshift()和shift()方法的行为非常类似于push()和pop()方法,不一样的是:前者是在数组的头部进行元素的插入和删除操作。unshift()在数组的头部添加一个或多个元素,并将已存在的元素移动到更高索引的位置来获得足够的空间,最后返回数组新的长度。shift()删除数组的第一个元素并返回所删除的元素,然后把所有随后的元素向前移动一个位置来填补数组头部的空缺。注意:这两个方法都会修改原始数组。
var arr = [6, 2, 3, 4, 5, 6]; console.log(arr.shift()); // 6 console.log(arr); // [2, 3, 4, 5, 6] console.log(arr.unshift(['a', 'b'])); // 6 console.log(arr); // [['a', 'b'], 2, 3, 4, 5, 6] console.log(arr.unshift('a', 'b')); // 8 console.log(arr); // ['a', 'b', ['a', 'b'] 2, 3, 4, 5, 6]
注意,当使用多个参数调用unshift()时,如果参数是一次性插入的而非一次一个地插入,这意味着最终的数组中插入的元素的顺序和它们在参数列表中的顺序一致。而假如元素是一次一个地插入,它们的顺序应该是反过来的。
var arr = [6, 2, 3, 4, 5, 6]; console.log(arr.unshift('a', 'b', 'c')); // 9 console.log(arr); // ['a', 'b', 'c', 6, 2, 3, 4, 5, 6] console.log(arr.unshift(1)); // 10 console.log(arr); // [1, 'a', 'b', 'c', 6, 2, 3, 4, 5, 6] console.log(arr.unshift(2)); // 11 console.log(arr); // [2, 1, 'a', 'b', 'c', 6, 2, 3, 4, 5, 6]
9、Array.toString()和Array.toLocaleString()方法
数组和其他JavaScript对象一样拥有toString()方法。针对数组,该方法将数组的每个元素都转化为字符串并且输出用逗号分隔的字符串列表。注意:此方法不会修改原始数组(这与不使用任何参数调用join()方法返回的字符串是一样的)
var arr = [1, 2, 3]; console.log(arr.toString()); // 1,2,3 console.log(typeof(arr.toString())) // string console.log(arr); // [1, 2, 3]
扩展:toLocaleString()是toString()方法的本地化版本。它调用元素的toLocaleString()方法将每个数组元素转化为字符串,并且使用本地化分隔符将这些字符串连接起来生成最终的字符串。
总结:以上介绍的Array数组方法中,共12个方法,这些方法都是在ECMAScript 3中定义的。其中,Array.join()方法、Array.concat()方法、Array.slice()方法、Array.toString方法以及Array.toLocaleString()方法,都不会改变原始数组。其他7中数组方法执行时,都会对原始数进行改变。
JavaScript中数组Array方法详解的更多相关文章
- JavaScript中的Array类型详解
与其他语言中的数组的区别: 1.JavaScript数组的每一项都可以保存任何类型的数据,一个数组的数组元素可以是不同类型的数据. 2.数组的大小是动态调整的,可以随着数据的添加自动的增长. 1.两种 ...
- JavaScript中return的用法详解
JavaScript中return的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 t ...
- javascript中的this作用域详解
javascript中的this作用域详解 Javascript中this的指向一直是困扰我很久的问题,在使用中出错的机率也非常大.在面向对象语言中,它代表了当前对象的一个引用,而在js中却经常让我觉 ...
- JavaScript中this的用法详解
JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
- javascript中=、==、===区别详解
javascript中=.==.===区别详解今天在项目开发过中发现在一个小问题.在判断n==""结果当n=0时 n==""结果也返回了true.虽然是个小问题 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- Python中格式化format()方法详解
Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...
- javascript 中合并排序算法 详解
javascript 中合并排序算法 详解 我会通过程序的执行过程来给大家合并排序是如何排序的... 合并排序代码如下: <script type="text/javascript& ...
随机推荐
- PHPEXCEL实例-导出EXCEL
PHPExcel 是相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPExcel 是个不错的选择. <?php /* * 导出EXCEL * ...
- c# post 数据的方法
网页自动登录和提交POST信息的核心就是分析网页的源代码(HTML),在C#中,可以用来提取网页HTML的组件比较多,常用的用WebBrowser.WebClient.HttpWebRequest这三 ...
- UVa 10523 - Very Easy !!!
题目大意:给你一个公式,直接按照式子计算就可以了,要用到大数. import java.io.*; import java.util.*; import java.math.*; class Main ...
- Mybatis中常见的SQL DML
1.sql select 查询 <select id="query" resultType="CfCurrbusilogEntity" > sele ...
- iOS 之 线程和进程
进程是系统调度单位,拥有自己的资源 线程是CPU调度的基本单位 进程的同步机制: 原子操作.信号量机制.自旋锁.分布式系统
- Linux内存布局
在上一篇博文里,我们已经看到Linux如何有效地利用80x86的分段和分页硬件单元把逻辑地址转换为线性地址,在由线性地址转换到物理地址.那么我们的应用程序如何使用这些逻辑地址,整个内存的地址布局又是怎 ...
- 获取FMS的状态信息
application.getStats() application.getStats() Returns statistics about an application. Returns An Ob ...
- Bootstrap入门(二十八)JS插件5:工具提醒
Bootstrap入门(二十八)JS插件5:工具提醒 工具提示在使用过程中比较常见,但是实现起来有些麻烦,而bootstrap则很好地解决了这个问题. 我们来写一个简单的实例 先引入CSS文件和JS文 ...
- 搭建spring工程配置数据源连接池
Spring作为一个优秀的开源框架,越来越为大家所熟知,前段时间用搭了个spring工程来管理数据库连接池,没有借助Eclipse纯手工搭建,网上此类文章不多,这里给大家分享一下,也作为一个手记. 工 ...
- HDU5875
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...