JavaScript-->Array类型

Array类型

ECMAScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript 数组的每一项可以保存任何类型的数据。也就是说,第一个位置可以保存字符串,而第二个位置可以保存数值,第三个位置又可以保存对象。

创建数组的基本方法有两种:

  • 使用 Array 构造函数

    var colors = new Array();
    var colors = Array();             //可以省略 new 操作符
    var colors = new Array(20);       //指定数组长度
    var colors = new Array('red','blue','yellow');
    

    PS: 传递一个值,并且这个值是数值的话,会创建该数值长度的数组,而不是长度为 1,值为该数值的数组。

  • 使用数组字面量

    var colors = ['red','blue','yellow'];
    

2.2.1 数组长度

获取数组长度用 .length 属性。

var colors = ['red','blue','yellow'];
alert(colors.length);             //3

值得注意的是 .length 属性并不是只读的。我们可以通过设置这个属性的值,从数组末尾删除或添加新项。

var colors = ['red','blue','yellow'];
colors.length = 2;
alert(colors);                    //'red','blue'
colors.length = 4;
alert(colors[3]);                 //undefined

也可以通过下表的方式修改数组

var colors = ['red','blue','yellow'];
colors[10] = 'black';
alert(colors);                    //red,blue,yellow,,,,,,,,black

2.2.2 检测数组

确定某个对象是不是数组,使用 Array.isArray() 方法。

var colors = ['red','blue','yellow'];
console.log(Array.isArray(colors));   //true

2.2.3 转换方法

数字继承的 toLocaleString()、toString() 和 valueOf() 方法在默认情况下都会以逗号的字符串的形式返回数组项。

var colors = ['red','blue','yellow'];
alert(colors.toString());         //'red,blue,yellow'
alert(colors.valueOf());          //'red,blue,yellow'

使用 join() 方法则可以使用不同的分隔符来创建这个字符串

var colors = ['red','blue','yellow'];
alert(colors.join('|'));          //'red|blue|yellow'
alert(colors.join('@'));          //'red@blue@yellow'

2.2.4 栈方法和队列方法

是一种 LIFO (后进先出)的数据结构,最新添加的项最早被移除。栈方法有 push()向末尾添加pop()从末尾删除

var colors = [];
colors.push('red','blue','yellow');
alert(colors);                    //red,blue,yellow

colors.pop();
alert(colors);                   //red,blue

队列 的访问规则是 FIFO(先进先出),从队列的末尾添加项 push(),从队列的前端移除项 shift()。此外还有一个方法 unshift() 可以在数组前端添加任意个项。

重排序方法

数组中有两个直接用来重排序的方法:reserve() 和 sort()。
reserve() 会反转数组项的顺序。

var values = [1,2,3,4,5];
values.reserve();
console.log(values);              //5,4,3,2,1

sort() 先将数组项调用 toString() 方法,然后按从小到大排列。

var values = [0,1,5,10,23,56];
values.sort();
console.log(values);              //0,1,10,23,5,56

另外,sort() 还可以接收一个 比较函数 作为参数

var values = [0,1,5,10,23,56];
values.sort(compare);
console.log(values);              //0,1,5,10,23,56

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

PS: 比较函数接收两个参数,如果第一个参数应该位于第二个参数之前则返回一个负数,如果第一个参数应该位于第二个参数之后则返回一个整数,如果这两个参数相等则返回0。

操作方法

concat() 基于当前数组中的所有项创建一个新数组。没有传递参数的情况下,只是返回当前数组的一个副本;如果传递参数将被添加到数组末尾。

var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',['black','brown']);
console.log(colors2);               //red,green,blue,yellow,black,brown

slice() 基于当前数组中的一个或多个项创建新数组。如果传递一个参数,返回从该参数到当前数组末尾的所有项;如果传递两个参数,则返回两者之间的项(不包括结束位置)

var colors = ['red','green','blue'];
var colors2 = colors.slice(1,3);
console.log(colors2);               //green,blue

位置方法

indexOf()lastIndexOf() 这两个方法都接收两个参数:要查找的项和查找的起始位置。返回要查找的项在数组中的位置。(一个正着找,一个倒着找)

var numbers = [1,2,3,4,5,6,7,8,9];
alert(numbers.indexOf(4));          //3
alert(numbers.lastIndexOf(4));      //5

迭代方法

归并方法


 上一篇
Node的开放式模块[npm] Node的开放式模块[npm]
npmnpm有两层含义:一层是node的开放式模块登记和管理系统,官网为npmjs.com。另一层含义是node默认的模块管理器,是一个命令行下的软件,用来管理和安装node模块。 npm不需要单独安装,在安装node的时候,连带一起安装了
2018-10-30
下一篇 
JavaScript-->Date类型 JavaScript-->Date类型
Date类型ECMAScript 中的 Date 类型使用 UTC 国际协调时间,用从 1970年 1月 1日零时开始经过的毫秒数来保存日期,可以精确到 1970/1/1 之前或之后的 1亿年。 2.3.1 创建一个日期对象var now
2018-10-30
  目录