数组常用操作
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' ]

浙公网安备 33010602011771号