数组类型的方法列表:

 方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素。
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素。
slice() 从某个已有的数组返回选定的元素。
sort() 对数组的元素进行排序。
splice() 删除元素,并向数组添加新元素。
toString() 把数组转换为字符串,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。


写了几年js,有很多方法其实一次都没用到过,如:pop,reverse,shift,slice,unshift
最常用到的也就push,splice,sort
*/

//创建数组的方法
var arr = []; //这样很直观,不要使用 new Array(),除非你不嫌麻烦

//如果你非要用new Array(),那么请注意
var arr = new Array(5);
//实际上相当于
var arr = [undefined, undefined, undefined, undefined, undefined];

//但是
var arr = new Array(10,20);
//却相当于
var arr = [10, 20];


var links = document.getElementsByTagName("a");
//请注意links不是数组类型,而是"类数组",也就是除了有length属性外,它跟数组没什么关系


//数组类型最常用的几个方法:push,splice和sort
//push() (这个不用讲了)

//splice() 可以在指定的下标删除元素,以及插入元素

var arr = [1,2,3,4,5,6];
//删除数组中所有偶数
for(var i=0;i<arr.length;i++){
if(arr[i] % 2 == 0){
arr.splice(i,1);
i--;
}
}
alert(arr);
//最后剩下 [1,3,5]

//插入元素,这个比较偏门,几乎没用过,无视(有需要可以去查w3c的网站)


//sort() 数组排序 注意:此方法不会返回新数组,而是将原来的数组进行排序

//js引擎自己实现了排序的算法,所以你只要告诉排序系统怎么比较元素的大小就行了


var arr = ["a1", "b1", "a2", "b2"];
arr.sort();
alert(arr);//输出a1,a2,b1,b2
//字符类型排序,默认是根据首字符的unicode编码大小进行排序的


//如果不想破坏原来的数据,请先将原数组复制一份
var arr = ["a1", "b1", "a2", "b2"];
var arrCopy = arr.concat();
arrCopy.sort();



var arr = [1, 2, 11, 22];
arr.sort();
alert(arr);//输出1,11,2,22
//悲剧的是,默认的排序规则只有一种,连数字类型都要自己实现比较规则




//自定义排序规则
var p1 = { name: "Lily", age: 18 };
var p2 = { name: "Tom", age: 12 };
var p3 = { name: "Anna", age: 27 };
var arr = [p1, p2, p3];
function sortByAge(a,b){
//使用升序排序
//如果a排在b后面,返回一个正数
//如果a排在b前面,返回一个负数
//如果a跟b无法区分顺序,返回0
//所以,年纪小的排在前面的话
return a.age - b.age;

//降序的话则相反,可以写成 return (a.age - b.age)*-1;
//通常我都记不住升序和降序的区别,不过运行一下看结果就好了.
}
function sortByName(a,b){
//localeCompare是字符串类型的一个方法,也就是系统默认的unicode编码大小进行排序
return a.name.localeCompare(b.name);
}
arr.sort(sortByAge);
//结果为[p2,p1,p3],因为 12<18<27
arr.sort(sortByName);
//结果为[p3,p1,p2] 因为 A的unicode编码最小


//综合例子
//排序员工:按职位由高到低,年龄由大到小,姓名A-Z的规则排序
var p1 = { name: "Lily", age: 28, position: "CEO" };
var p2 = { name: "Tom", age: 22, position: "VP" };
var p3 = { name: "Anna", age: 27, position: "VP" };
var p4 = { name: "Mary", age: 22, position: "MG" };
var arr = [p1, p2, p3, p4];

var positions = ["CEO","VP","MG"];
arr.sort(function(a, b) {
var n = positions.indexOf(a.position) - positions.indexOf(b.position);//firefox浏览器的数组类型有indexOf方法(不知道是不是firebug扩展的) ie下没有
if (n != 0) return n;

n = a.age - b.age;
if (n != 0) return -n;

n = a.name.localeCompare(b.name);
return n;
});
//结果是[p1, p3, p2, p4] CEO -> 27岁VP -> 22岁VP -> MG
alert(arr.toSource());//toSource()是firefox下的一个方法,可以直接输出json,ie没有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值