JavaScript之Array类型

2017-12-29  本文已影响0人  码字仓颉

1. 介绍

1.1 定义
//第一种方法:通过构造函数 Array //注:可以省略 new 关键字
var colors = new Array();
var colors = new Array(20);
var colors = new Array();
//第二种方法:数组字面量
var colors = [];
var colors = ["blue","black","green"];
1.2 使用和赋值
var colors = ["blue","black","green"];
alert(colors[0]);    //使用
colors[2] = "black"; //赋值
colors[3] = "brown"; //新增
1.3 length属性

length属性不是只读的!
通过设置此属性可以从数组的末尾添加或删除项,新增的项默认为undefined
利用length属性可以方便的向数组的末尾添加项。

var colors = ["blue","black","green"];
colors[colors.length] = "black";
colors[colors.length] = "brown";

colors[99] = "white";
alert(colors.length); //100

2. 检测数组:Array.isArray()

使用instanceof操作符的问题在于它是假定只有一个全局执行环境。如果项目中使用了多个框架,就存在两个以上的全局执行环境,从而存在两个以上版本的Array构造函数。
为了解决这个问题,ECMASsript5新增了Array.isArray()。这个方法的目的是最终确定某个值到底是不是数组。

var bool = value instanceof Array;
var bool = Array.isArray(value);

3. 转换方法:toLocaleString()、toString()、valueOf()、join()

JS中每个对象都有转换方法:toLocaleString()、toString()和valueOf()方法。

4.添加删除:push()、pop()、shift()、unshift()

5.重排序方法:reverse()、sort()

最简单的例子:
var array = [1,2,3,4,5];
var first = array.reverse();  //[5,4,3,2,1]
var second = first.reverse();  //[1,2,3,4,5]

在上面的例子,reserse()方法直观明了,但不够灵活,不能满足我们自定义排序规则的需求。因此才有了sort()方法。sort()方法默认按照升序排列。为了实现排序,该方法会自动调用每个数组项的toString()方法,比较字符串进行排序。如:

var array = [0,1,5,10,15];
var result = array.sort(); //[0,1,10,15,5]
//在这里会得到以外的结果,因为并不是按照数字比较的

sort()方法强大之处在于其可以接受一个比较函数作为参数,从而实现我们自定义排序规则。比较函数接收两个参数,表示的是数组中的两项,暂用a,b表示,如果a应该位于b之前,则返回一个负数(表示不用交换位置);如果a应该位于b之后,则返回一个正数(表示需要交换位置);如果a等于b,则返回0。例:

//比较方法
function compare(a,b){
    if(a<b){
        return -1;
    } else if(a>b){
        return 1;
    } else {
        return 0
    }
}

//使用以上比较方法实现升序
var array = [0,1,5,10,15];
var result = array.sort(compare); //[0,1,5,10,15]

通过以上形式,可以实现更复杂的排序效果。

6.操作方法:concat()、slice()、splice()

7.位置方法:indexOf()、lastIndexOf()

EXMAScript增加了两个位置方法。这两个方法都接收两个参数:要查找的项和开始查找的位置索引。返回值是要查找的项在数组中的位置,没找到返回-1.在查找的过程中使用全等操作符。

8.迭代方法:every()、filter()、forEach、map()、some()

5个迭代方法,都接收两个参数:要在每一项上运行的函数和运行该函数的作用域对象(影响this)。传入的函数接收三个参数:当前数组项的值,该项在数组中位置,数组本身。

9.归并方法:reduce()、reduceRight()

ECMAScript5新增方法。这两个方法都会迭代数组所有项,构建一个最终返回值。接受两个参数:一个在每一项上调用的函数和作为归并基础的初始值。其中接受的第一个参数是函数,它接收4个参数:==前一个值,当前值,项索引,数组对象==;这个函数返回的任何值都会作为第一个参数自动传给下一项.两个函数执行方向不同,除此之外完全相同。

image
上一篇下一篇

猜你喜欢

热点阅读