数组常用操作

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' ]

  

原文地址:https://www.cnblogs.com/chenlogin/p/4749372.html