2010.05.20———javascript 数组

本文深入探讨了JavaScript中数组的基本操作方法,包括连接、分割、修改元素位置及删除等,并详细阐述了如何通过自定义函数优化数组排序,避免默认排序带来的意外问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2010.05.20———javascript 数组
[url]http://www.iteye.com/topic/652093[/url]


1.数组中的方法:

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


2.关于sort方法

我们再来讨论下数组的排序,JavaScript的数组的排序函数sort将数组按字母顺序排序,排序过程会影响源数组,比如:

Js代码
var array = ["Cisio", "Borland", "Apple", "Dell"];  
print(array);
array.sort();
print(array);



执行结果为:

Cisio,Borland,Apple,Dell
Apple,Borland,Cisio,Dell


这种字母序的排序方式会造成一些非你所预期的小bug,比如:

Js代码
var array = [10, 23, 44, 58, 106, 235];  
array.sort();
print(array);



得到的结果为:

10,106,23,235,44,58


可以看到,sort不关注数组中的内容是数字还是字母,它仅仅是按照字母的字典序来进行排序,对于这种情况,JavaScript提供了另一种途径,通过给sort函数传递一个函数对象,按照这个函数提供的规则对数组进行排序。

Js代码
function sorter(a, b){  
return a - b;
}

var array = [10, 23, 44, 58, 106, 235];
array.sort(sorter);
print(array);



函数sorter接受两个参数,返回一个数值,如果这个值大于0,则说明第一个参数大于第二个参数,如果返回值为0,说明两个参数相等,返回值小于0,则第一个参数小于第二个参数,sort根据这个返回值来进行最终的排序:

10,23,44,58,106,235


当然,也可以简写成这样:

Js代码
array.sort(function(a, b){return a - b;});//正序  
array.sort(function(a, b){return b - a;});//逆序



3.给Array增加remove方法

数组中的每个元素都是一个对象,那么,我们可以使用delete来删除元素吗?来看看下边这个小例子:

Js代码
var array = ["one", "two","three","four"];  
//数组中现在的内容为:
//one,two,three,four
//array.length == 4
delete array[2];



然后,我们再来看看这个数组的内容:

one, two, undefined, four
//array.length == 4


可以看到,delete只是将数组array的第三个位置上的元素删掉了,可是数组的长度没有改变


一个很好的实现 来自jquery源码
//Array Remove - By John Resig (MIT Licensed)  
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};


这个函数扩展了JavaScript的内置对象Array,这样,我们以后的所有声明的数组都会自动的拥有remove能力,我们来看看这个方法的用法:

Js代码
var array = ["one", "two", "three", "four", "five", "six"];  
print(array);
array.remove(0);//删除第一个元素
print(array);
array.remove(-1);//删除倒数第一个元素
print(array);
array.remove(0,2);//删除数组中下标为0-2的元素(3个)
print(array);



会得到这样的结果:

one,two,three,four,five,six
two,three,four,five,six
two,three,four,five
five
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值