Array类型

创建数组

  1. 使用Array构造函数
// new也可以省略

var colors = new Array();
var colors = new Array(3);
var colors = new Array("gold", "sliver");
  1. 数组字面量表示法
var colors = [];
var colors = ["gold", "sliver"];

检测数组

if(Array.isArray(value)){
    // ...
}

value instanceof Array也可以检测,但是在多框架的网页中可能会出问题。

转换方法

toString( )会返回逗号分隔的字符串,valueOf( )会返回数组
join( )如果不传参或传一个undefined,结果和toString( )相同

var colors = ["gold", "sliver"];
console.log(colors.toString());  // gold,sliver
console.log(colors.valueOf());   // ["gold", "sliver"]
console.log(colors.join("||"));  // gold||sliver

栈方法(LIFO)

push( )入栈,返回数组长度,可以传多个参数
pop( )出栈,返回删除的值(最后一项)

队列方法(FIFO)

push( )入队,返回数组长度,可以传多个参数
shift( )出队,返回删除的值(第一项)
unshift( )与shift( )作用相反,可以用unshift( )和pop( )模拟反过来的队列操作

重排序方法

reverse( )会反转数组项的顺序

var arr = [0, 1, 5, 10, 15];
console.log(arr.reverse());   // [15, 10, 5, 1, 0]

sort( )按升序排列数组项,会调用每个数组项的toString( )方法,所以尽管下面的数组已经是升序的,但是调用sort( )后结果会改变

var arr = [0, 1, 5, 10, 15];
console.log(arr.sort());      // [0, 1, 10, 15, 5]

为了解决这个问题,我们可以自己定义一个比较函数,作为sort( )的参数

function compare(value1, value2){
    if(value1 > value2){
        return 1;
    } else if(value1 < value2){
        return -1;
    } else{
        return 0;
    }
}
var arr = [0, 1, 5, 10, 15];
console.log(arr.sort(compare));  // [0, 1, 5, 10, 15]

对于数值类型或valueOf( )方法会返回数值类型的对象类型,可以定义一个更简单的比较函数

function compare(value1, value2){
    return value2 - value1;
}

操作方法

concat( )可以基于当前数组中的所有项创建一个新数组

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

slice( )能够基于当前数组中的一或多个项创建一个新数组
如果有一个参数,返回从指定位置开始到数组末尾的所有项;
如果有两个参数,返回起始和结束位置之间的项,但不包括结束位置的项。

var colors = ["red", "green", "blue", "yellow", "black", "brown"];
console.log(colors.slice(1));      // ["green", "blue", "yellow", "black", "brown"]
console.log(colors.slice(1,4));    // ["green", "blue", "yellow"]

splice( )有很多用法,主要用途是向数组的中部插入项,返回从原始数组中删除的项组成的数组(没有删除返回空数组)
使用方法有3种:
删除 可以删除任意数量的项,参数为:要删除的第一项的位置,要删除的项数
插入 可以向指定位置插入任意数量的项,参数为:起始位置,0(要删除的项数),要插入的项
替换 可以向指定位置插入任意数量的项,且同时删除任意数量的项,参数为:起始位置,要删除的项数,要插入的项(插入的项数不必与删除的项数相等)

var colors1 = ["red", "green", "blue"];
console.log(colors1.splice(0, 1));                       // ["red"]
console.log(colors1);                                    // ["green", "blue"]

var colors2 = ["red", "green", "blue"];
console.log(colors2.splice(1, 0 ,"yellow", "orange"));   // []
console.log(colors2);                                    // ["red", "yellow", "orange", "green", "blue"]

var colors3 = ["red", "green", "blue"];
console.log(colors3.splice(1, 1 ,"gold", "sliver"));     // ["green"]
console.log(colors3);                                    // ["red", "gold", "sliver", "blue"]

位置方法

indexOf( )从数组的开头向后找
lastIndexOf( )从数组的末尾向前找
两个参数:要查找的项,查找起点位置的索引(可选)
返回查找项在数组中的位置,没找到返回-1,比较时会使用全等操作符(===)

var arr = [1,2,3,4,5,4,3,2,1];
console.log(arr.indexOf(4));          // 3
console.log(arr.indexOf(4, 4));       // 5
console.log(arr.lastIndexOf(4));      // 5
console.log(arr.lastIndexOf(4, 4));   // 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值