码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript之Array类型

时间:2015-12-20 12:57:53      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

特殊性

  • 数组的每一项可以保存任何类型的数据
  • 大小可以动态调整(即随着数据的添加而自动增长容量)
  • length属性非只读!

创建数组的基本方式

//Array构造函数
var colors = new Array();
colors = new Array(20);//初始化数组容量
colors = new Array('red','blue',4)//创建包含该三项值的数组

//数组字面量表示
colors = ['name',4,true];

利用length的非只读性、自动更新性

//移除项
var colors = ['red','green','purple'];
colors.length = 2;
console.log(colors[2])//undefined;

//添加新项
colors[colors.length] = 'black';
colors[colors.length] = 'white';
console.log(colors);//["red", "green", "black", "white"]

数组检测

//一般情况下可以使用instanceof(注意:不适用两个以上不同全局执行环境(页面包含多个框架))
console.log(['time','var'] instanceof Array);//true

//推荐:
if(Array.isArray(['time','var'])){
  console.log("I'm array!");
}

常用转换方法

var colors = ['red','green','white'];
console.log(colors.toString());//red,green,white
console.log(colors.join('-'));//red-green-white

模拟数据类型


模拟堆栈(LIFO---last in first out)

var container = [];
container.push('a','b');
console.log(container.pop());//b
console.log(container.pop());//a

应用:反向输出数组的值

var container = ['a','b'];
var copy = container.slice(0,container.length);
while(copy.length != 0){
  console.log(copy.pop());
}

模拟队列(FIFO---first in frist out)

var container = [];
container.push('a','b');
console.log(container.shift());//a
console.log(container.shift());//b

//应用:使用unshift往数组前端添加项
var numContainer = ['2','3'];
numContainer.unshift('1');//返回添加后数组长度
numContainer.unshift('0');
console.log(numContainer);//["0", "1", "2", "3"]

操作数组


拼接、拷贝数组

var container = ['time','money','reverse'];

//1. concat 基于当前数组项拼接新数组,不影响原数组
var copy_container = container.concat();//copy of array
var mix_container = container.concat('yea',['haha','liu'])//contact array

console.log(mix_container);//["time", "money", "reverse", "yea", "haha", "liu"]
console.log(copy_container);//["time", "money", "reverse"]

//2. slice  基于当前数组截取出新数组,不影响原数组
copy_container = container.slice(0);//copy of array
var slice_array = mix_container.slice(1,2);// slice of array

console.log(copy_container);//["time", "money", "reverse"]
console.log(slice_array);//["money"]

//3. splice 影响原数组,返回值为包含删除项的数组(若无,则为空数组),有三种用法:
container.splice(0,1);//删除第1项
console.log(container);//["money", "reverse"]
container.splice(1,0,'lol');//把'lol'插入到位置1
console.log(container);//["money", "lol", "reverse"]
container.splice(1,1,'tt','hhh');//删除位置1,然后从位置1插入两下
console.log(container);//["money", "tt", "hhh", "reverse"]

排序数组

reverse()

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

sort()

sort默认情况下,按升序排列数组项,小值位于最前面,大值位于最后面,注意:sort会调用每项的toString转型方法,比较的是字符串,就算是数值,比较的也是字符串!!

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

自定义排序方法

var values = [0,1,5,10,15]
function orderByAsc(val1,val2){
  return val1 - val2;
}
values.sort(orderByAsc);
console.log(values);//[0, 1, 5, 10, 15]

JavaScript之Array类型

标签:

原文地址:http://www.cnblogs.com/ZHeGeS/p/JavaScript-zhiArray-lei-xing.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!