ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的。
1、Array.join()方法
Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串。可以指定一个可选的符号或字符串在生成的字符串中来分隔数组的各个元素。如果不指定分隔符,默认使用逗号。注意:此方法不会改变原始数组
var arr = ['a', 'b', 'c'];console.log(arr.join()); // a,b,cconsole.log(arr.join(" ")); // a b cconsole.log(arr.join("")); // abcconsole.log(arr.join("slf")); // aslfbslfcvar 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]
有时候需要对一个字符串数组执行不区分大小写的字母表排序,这时可以使用比较函数,首先将参数都转化为小写字符串(使用toLowerCase()方法),再开始比较。
var arr = ['abc', 'Def', 'BoC', 'FED'];console.log(arr.sort()); // ["BoC", "Def", "FED", "abc"]console.log(arr.sort(function(s, t){ var a = s.toLowerCase(); var b = t.toLowerCase(); if (a < b) return -1; if (a > b) return 1; return 0;})); // ["abc", "BoC", "Def", "FED"]
新闻热点
疑难解答
图片精选