2010.05.20———javascript 数组
[url]http://www.iteye.com/topic/652093[/url]
1.数组中的方法:
2.关于sort方法
我们再来讨论下数组的排序,JavaScript的数组的排序函数sort将数组按字母顺序排序,排序过程会影响源数组,比如:
Js代码
执行结果为:
这种字母序的排序方式会造成一些非你所预期的小bug,比如:
Js代码
得到的结果为:
可以看到,sort不关注数组中的内容是数字还是字母,它仅仅是按照字母的字典序来进行排序,对于这种情况,JavaScript提供了另一种途径,通过给sort函数传递一个函数对象,按照这个函数提供的规则对数组进行排序。
Js代码
函数sorter接受两个参数,返回一个数值,如果这个值大于0,则说明第一个参数大于第二个参数,如果返回值为0,说明两个参数相等,返回值小于0,则第一个参数小于第二个参数,sort根据这个返回值来进行最终的排序:
当然,也可以简写成这样:
Js代码
3.给Array增加remove方法
数组中的每个元素都是一个对象,那么,我们可以使用delete来删除元素吗?来看看下边这个小例子:
Js代码
然后,我们再来看看这个数组的内容:
可以看到,delete只是将数组array的第三个位置上的元素删掉了,可是数组的长度没有改变
一个很好的实现 来自jquery源码
这个函数扩展了JavaScript的内置对象Array,这样,我们以后的所有声明的数组都会自动的拥有remove能力,我们来看看这个方法的用法:
Js代码
会得到这样的结果:
[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