数组

创建数组的基本方式有两种。第一种是使用Array构造函数:

var coloe = new Array();

如果预先知道数组的长度,可以创建一个已知长度的数组: var length = new Array(10);

也可以向Array构造函数传递数组中包含的项: var colors = new Array('red', 'blue', 'green');

创建数组的第二种基本方式是使用数组字面量表示法: var colors = ['red', 'blue', 'green'];

检查数组

var arr = [1, 2, 3];
// 1
arr instranceof Array  ==> true

// 2
arr.isArray(value)  ==> true


1、join()

分割数组为字符串

var arr = [1, 2, 3, 4];
console.log(arr.join('-')); // 1-2-3-4

注:原数组不变


2、push()和pop()
  • push(): 接受任意数量参数,将他们添加到数组末尾,返回修改后的数组长度
var arr = [1, 2, 3, 4];
var len = arr.push(5); ==> 5
console.log(arr); ==> [1, 2, 3, 4, 5];
  • pop(): 移除数组末尾最后一项,返回移除的项
var arr = [1, 2, 3, 4, 5];
var b = arr.pop(); ==> 5
console.log(arr); ==> [1, 2, 3, 4];

注:原数组改变


3、shift()和unshift()
  • unshift(): 接受任意数量的参数,将他们添加到数组开头,返回数组的长度
var arr = [1, 2, 3, 4];
var len = arr.unshift(0); ==> 5
console.log(arr); ==> [0, 1, 2, 3, 4]
  • shift(): 移除数组开头的一项,返回移除的项
var arr = [1, 2 , 3, 4];
var b = arr.shift();  ==> 1
console.log(arr); ==> [2, 3, 4]

注: 原数组改变


4、sort()和reverse()
  • sort(): 数组升序排序。排序时,sort()方法调用每个数组项的toString()的转型方法,然后对得到的字符串进行排序。所以会出现以下情况:
var a = [1, 5, 10, 15];
console.log(a.sort()); ==> [1, 10, 15, 5]  ==> 错误排序

正确排序

var arr = [1, 5, 10, 15];

arr.sort(function(value1, value2) {
  if (value1 < value2) {
    return -1;
  } else if (value1 > value2) {
    return 1;
  } else {
    return 0;
  }
});

注: 原数组改变

  • reverse(): 反转数组的排序
var arr = [1, 2, 3, 4];
console.log(arr.reverse()); ==> [4, 3, 2, 1]

注: 原数组改变


5、concat()和...
  • concat(): 将参数添加到原数组中
var a = [1, 2, 3];
var b = [4, 5, 6];
console.log(a.concat(b)); ==> [1, 2, 3, 4, 5, 6]

注:原数组不变

  • ...
var a = [1, 2, 3];
var b = [4, 5, 6];
console.log(...a, ...b); ==> [1, 2, 3, 4, 5, 6]

注:原数组不变


6、slice()

arr.slice(index1, index2)

返回原数组指定开始下标到结束下标组成的新数组。

var arr = [1, 2, 3, 4];
var b = arr.slice(2);
console.log(b); ==> [3, 4]
console.log(arr); ==> [1, 2, 3, 4]

注:原数组不变


7、splice()

arr.splice(index, howmary, item1, ...., itemx)

  • index: 必须。整数。添加/删除项目的位置,使用负数可从数组结尾处规定位置
  • howmary: 必须。要删除的项目数量。如果是0,则不会删除项目
  • item, ..., itemx: 可选,香数组添加新项目
var arr = [1, 2, 3, 4, 5, 6];

// 数组0的位置开始,移除两个参数,返回移除的参数
var newArr1 = arr.splice(0, 2);
console.log(newArr1); ==> [1, 2]
console.log(arr); ==> [3, 4, 5, 6]

// 数组2的位置开始,增加参数11, 12
var newArr2 = arr.splice(2, 0, 11, 12);
console.log(newArr2); ==> []
console.log(arr); ==> [3, 4, 11, 12, 5, 6]

// 移除数组1额参数,添加入2, 22
var newArr3 = arr.splice(1, 1, 21, 22);
console.log(newArr3); ==> [4]
console.log(arr); ==> [3, 21, 22, 11, 12, 5, 6]

注: 原数组改变