1、shift():删除数组的第一个元素,返回删除的值。
2、unshift():把参数加载数组的前面,返回数组的长度。
3、pop():删除数组的最后一个元素,返回删除的值。
4、push():将参数加载到数组的最后,返回数组的长度。
5、concat():把两个数组拼接起来,不改变原始数组,返回新的数组。
6、splice(start,deleteCount,val1,val2,...)从start位置开始删除deleteCount项,并从该位置起插入val1,val2,...
7、reverse()将数组反序
8、sort(orderfunction)按指定的参数对数组进行排序
9、slice(start,end)返回从原数组中指定开始下标到结束下标之间的项组成的新数组
10、join(separator):将数组的元素组起一个字符串,以separator为分隔符,默认逗号
11、toString()把数组转换为字符串,并返回结果。
合并数组的几种方式
1、concat()
var num1 = [1, 2, 3]; var num2 = [4, 5, 6]; var num3 = [7, 8, 9];
// 组成新数组[1, 2, 3, 4, 5, 6, 7, 8, 9]; 原数组 num1, num2, num3 未被修改 var nums = num1.concat(num2, num3);
2、循环合并
for (var i=0; i < b.length; i++) { a.push( b[i] ); }
3、apply
var merge = function() { return Array.prototype.concat.apply([], arguments) } merge([1,2,4],[3,4],[5,6]);//[1, 2, 4, 3, 4, 5, 6]
4、去重复
var arr1 = ['a']; var arr2 = ['b', 'c']; var arr3 = ['c', ['d'], 'e', undefined, null]; var concat = (function(){ // concat arr1 and arr2 without duplication. var concat_ = function(arr1, arr2) { for (var i=arr2.length-1;i>=0;i--) { arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0; } }; // concat arbitrary arrays. // Instead of alter supplied arrays, return a new one. return function(arr) {//arr1通过参数传递,arr2.arr3通过arguments获取 var result = arr.slice(); for (var i=arguments.length-1;i>=1;i--) { concat_(result, arguments[i]); } return result; }; }()); concat(arr1, arr2, arr3);//[ 'a', null, undefined, 'e', [ 'd' ], 'c', 'b' ]
5、处理undefined和null
这里的undefined可能由数组本身存在的undefined元素引起,也可能由于delete引起。
var concat = (function(){ // concat arr1 and arr2 without duplication. var concat_ = function(arr1, arr2) { for (var i=arr2.length-1;i>=0;i--) { * if (arr2[i] === undefined || arr2[i] === null) { * continue; * } arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0; } }; // concat arbitrary arrays. // Instead of alter supplied arrays, return a new one. return function(arr) { var result = arr.slice(); for (var i=arguments.length-1;i>=1;i--) { concat_(result, arguments[i]); } return result; }; }()); concat(arr1, arr2, arr3);//[ 'a', 'e', [ 'd' ], 'c', 'b' ] delete arr3[2]; concat(arr1, arr2, arr3);//[ 'a', [ 'd' ], 'c', 'b' ]
6、扁平化
var concat = (function(){ // concat arr1 and arr2 without duplication. var concat_ = function(arr1, arr2) { for (var i=arr2.length-1;i>=0;i--) { * // escape undefined and null element * if (arr2[i] === undefined || arr2[i] === null) { * continue; * } * // recursive deal with array element * // can also handle multi-level array wrapper * if (classof(arr2[i]) === 'Array') { * for (var j=arr2[i].length-1;j>=0;j--) { * concat_(arr1, arr2[i][j]); * } * continue; * } arr1.indexOf(arr2[i]) === -1 ? arr1.push(arr2[i]) : 0; } }; // concat arbitrary arrays. // Instead of alter supplied arrays, return a new one. return function(arr) { var result = arr.slice(); for (var i=arguments.length-1;i>=1;i--) { concat_(result, arguments[i]); } return result; }; }()); concat(arr1, arr2, arr3)//[ 'a', 'd', 'c', 'b' ]