数组
数组中的每一项都可以保存任何类型的数据,比如字符串,对象等,并且大小是动态调整的,我们可以随意添加新项;创建方式:
var colors = new Array();
var colors = new Array("red","blue");
array.pop() 它是一个类似栈的方法,弹出最后进去的值,并且返回数组长度
array.push(s) 向数组尾添加一个数据
array.shift() 等效与队列,先进先出形式,弹出数组最先进去的值,并且作为返回值
array.unshift(s)向数组的前端插入数据
array.reverse() 对数组本身进行反转
array.sort() 对数组本身,进行先tostring()操作,然后比较字符串的大小,按从小到大的顺序赋给原数组
易错点:
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //[0, 1, 10, 15, 5] 注意不是按数值大小
array.concat(s) 它会先基于array,产生一个它的副本,然后把s跟他连上,返回一个连接好的对象array.slice(1,4) 返回array[1]到array[4]中的值,不包括array[4]
array.join(",") 将数组转化为字符串,中间参数是分割符
spice 用法,主要是以参数为2和大于2分界
spice(0,2) 对自身删除前两项,并且返回删除的值
spice (start, step, &args)也是对自身处理, 其中step是删除的项数,当为0时表示在start位置直接插入,同时返回删除的值
对上面的sort方法还有一个扩展就是接受一个比较函数,来指明比较的标准。因为sort默认是<号,也就是前面的a,小于后面的b的话,就维持不变,否则颠倒过来,具体逻辑是如何的,见下面的自定义形式
a,b比较,如果方法返回-1或0,就维持不变,如果返回1的话就把a,b颠倒一下
function test(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
if (value1 < value2){
return -1;
} else if (value1 > value2){
return 1;
}else {
return 0;
}
}
}
var data=[{name:"za",age:28},{name:"Ni", age:29}]
data.sort(test("name")); //设置函数他们按name的值来比较
alert(data[0].name) //输出Ni
data.sort(test("age")); //设置函数他们按age的值来比较
alert(data[0].name) //输出za