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备受数组方法执行时,都见面针对原始数进行转移。