日期:2014-05-16  浏览次数:20330 次

JavaScript 学习笔记 五 数组

?

//数组,包含有 pop,push 等类似与栈的操作,又有 slice, reverse,sort 这样类似与列表的操作
var arr = new Array(1,1,1,2,3,1);
arr.sort();alert(arr);//排序 sort不关注数组中的内容是数字还是字母,它仅仅是按照字母的字典序来进行排序
arr.sort(function(a, b){return a - b;});alert(arr);//正序排序,自定义规则排序 针对数字
arr.sort(function(a, b){return b - a;});alert(arr);//逆序排序,自定义规则排序 针对数字

arr.length = 3;alert(arr);//这个变量并非只读属,通过设置length 属性来将数组元素裁减

var array = ["one", "two", "three", "four"];//字面量方式来创建
var array2 = ["yet", "another", "array"];
var newArr = arr.concat(array,array2);//拼接

alert(newArr.slice(2,4));// 提取 newArr 数组中从第2个后面的开始到第4个之间的元素
var ssArr = newArr.slice(2);
newArr.splice(2,4);alert(newArr);//第二个开始删除 4个元素
newArr.splice(2,0,"aa","bb");alert(newArr);//第二个开始删除0个元素,并添加后面的元素
var str = array.join("|");//把数组以 | 来拼接成字符串
alert(str);

//删除元素,以后数组就拥有了删除元素的功能
//影响整个原型链
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);
};
array.remove(2);
alert(array);

//不影响整个原型链,调用的时候需要显示的调用
//相当于给 JavaScript 内置的 Array 添加了一个静态方
Array.remove = function(array, from, to) {
    var rest = array.slice((to || from) + 1 || array.length);
    array.length = from < 0 ? array.length + from : from;
    return array.push.apply(array, rest);
}
Array.remove(array,0,2);//删除0, 1, 2三个元素
//注意点:    除非必要,尽量不要对全局对象进行扩展,因为对全局对象的扩展会造成所有
//                继承链上都带上“烙印”,而有时候这些烙印会成为滋生 bug 的温床。