关闭

对js中的引用类型的理解(3)——Array类型

标签: javascript
141人阅读 评论(0) 收藏 举报
分类:

简单总结

js数组的每一项可以保存任何类型的数据,js数组的大小可以动态调整,即随时可以随着数据的添加自动增长以容纳新数据(js是一种动态类型语言)

2种创建数组的基本方式:

//// 第一种
var colors = new Array();
//如果预先知道数组要保存的项目数量
var colors = new Array(20);
//也可以向构造函数中添加元素
var colors = new Array("red","blue","green");

//另外,在使用Array构造函数时也可以省略new操作符:
var colors = Array(3);
var names = Array("sqliang");

//// 第二种:字面量(推荐)
var colors = ['red','green','blue'];
var names = [];//创建一个空数组(注:**在使用字面量表示法时,不会调用Array构造函数**)

数组的属性:

数组的length属性是比较有特点的,它不仅仅是只读的,因此通过设置这个属性,可以从数组的末尾移出项或向数组添加新项.
这里写图片描述

检测数组

//ES3对于一个网页或者一个全局作用域而言,使用instancof可以得到满意的结果
if(colors instanceof Array){

}
//ES5,支持的浏览器有:IE9+、FireFox4+、Chrome,Safari5+,opera10.5+
if(Array.isArray()colors){
}

转换方法

colors.toString();//toString()返回由数组中每个值得字符串拼接而成的一个以逗号分隔的字符串
colors.valueOf();//返回的还是数组
colors.toLocalString();//也会返回与toString()和valueOf()方法仙童的值

栈方法(LIFO,Last-In-First-Out)

js为数组专门提供了push()和pop()方法,以方便实现类似栈的行为
push()方法可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度,pop()方法则从数组末尾移除最后一项,减少数组的length值,并返回移除的项。

var colors = new Array();
var count = colors.push("red","green");
console.log(count);//2

count = colors.push("black");
console.log(count);//3

var item = colors.pop();
console.log(item);//"black"
console.log(colors.length);

队列方法(FIFO,First-In-First-Out)

队列在列表的末端添加项(push()),从列表的前端移除项(shift(),移除数组的第一个项并返回该项,同时将数组length减1)

var colors = new Array();
var count = colors.push("red","green");
console.log(count);//2

count = colors.push("black");
console.log(count);//3

var item = colors.shift();
console.log(item);//"red"
console.log(colors.length);//2

js还为数组提供了一个unshift()方法,可以在数组前端添加任意个项,并返回数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项

var colors = new Array();
var count = colors.unshift("red","green");
console.log(count);//2

count = colors.unshift("black");
console.log(count);//3

var item = colors.pop();
console.log(item);//"green"

*重新排序方法

可以直接使用reverse()和sort()来重新排序

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

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

sort()方法会按照升序排列数组项,即最小的排在最前面,最大的排在最后面。为了实现排序,sort()方法会调用每个数组项的toString()方法,然后比较得到的字符串,以确定如何排序,即使数组中的每一项都是数值,sort()方法比较的也是字符串,这种方案肯定不好,因此,sort方法可以接收一个比较函数作为参数,以便我们来指定哪个值位于哪个值得前面

//等价于compare1
function compare(value1,value2){
    if(value1 < value2){
        return -1;
    }else if(value1 > value2){
        return 1;
    }else{
        return 0;
    }
}
//compare1
function compare1(value1,value2){
    return value2 - value1;
}

var haha = [3,2,1,10,15];
haha.sort(compare);//升序排列
console.log(haha);//1,2,3,10,15

操作方法

concat()方法基于当前数组的所有项创建一个新数组。即先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有传递参数的情况下,它只是复制当前数组并返回副本。如果传递给concat()方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中。如果传递的不是数组,这些值会直接添加到结果数组的末尾处

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

console.log(colors);//red,green,blue
console.log(colors2);//red,green,blue,yellow,black,brown

slice()方法接收一个或两个参数,即要返回的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始位置和结束位置之间的项,单包括结束位置的项

var colors = ["red","green","blue","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
console.log(colors2);//"green","blue","yellow","purple"
console.log(colors3);//"green","blue","yellow"
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21652次
    • 积分:858
    • 等级:
    • 排名:千里之外
    • 原创:66篇
    • 转载:2篇
    • 译文:1篇
    • 评论:1条
    最新评论