在以前的一篇博客中提到了一些 JavaScript Array 對象的方法,好比 slice()、splice()、pop()、push() 等,博客連接:數組
http://xitongjiagoushi.blog.51cto.com/9975742/1653063ide
JavaScript Array還有一些經常使用的操做或者說技巧,好比清空數組,克隆數組等,下面來看一下。函數
1. 指定位置插入元素:this
使用 Array.prototype.splice()不只能夠刪除數組中的元素,也能夠在指定位置添加元素:spa
var ary = [1, 2, 3, 4, 5]; ary.splice(5, 0,6); console.log(ary); //[1, 2, 3, 4, 5, 6]
若是不介意擴展 Array.prototype,能夠爲其添加以下方法:prototype
Array.prototype.insert = function(index, items) { if(items instanceof Array) { var currentIndex = index; for(var i = 0; i < items.length; i++) { this.splice(currentIndex, 0, items[i]); currentIndex++; } } else { this.splice(index, 0, items); } }; ary.insert(6, 7); console.log(ary); //[1, 2, 3, 4, 5, 6, 7] ary.insert(7, [8,9]); console.log(ary); //[1, 2, 3, 4, 5, 6, 7, 8, 9]
2. 清空數組:對象
一般咱們會這樣清空數組:blog
ary = []; console.log(ary); //[]
可是這並非最優的方式,由於這會建立一個對新的空數組的引用:排序
var ary = [1, 2, 3, 4, 5], newAry = ary; //ary指向一個新的空數組 ary = []; //並不影響原數組([1, 2, 3, 4, 5]) console.log(newAry); //[1, 2, 3, 4, 5]
var ary = [1, 2, 3, 4, 5], newAry = ary; //ary仍是對原數組([1, 2, 3, 4, 5])的引用 ary.length = 0; //原數組被清空 console.log(newAry); //[]
經過上面的解釋不難看出,最優的方式是將數組的 length 屬性賦值爲 0:ip
var ary = [1, 2,3, 4, 5]; ary.lengh = 0; console.log(ary); //[]
注:
對 String.prototype.length 賦值並不能影響 String 的長度,這一點要和對 Array.prototype.length 賦值區分開來。
3. 數組元素排序:
Array.prototype.sort()用來排序數組,不傳參時按默認規則排序,如:
[1, 3, 9,2].sort(); //[1, 2, 3, 9] [1, 「a」, function(){}, 12, 「c」].sort(); //[1, 12, {}, 「a」, 「c」, [Function]]
若是想要定製本身的排序規則,須要傳入一個有返回值的排序函數,好比想要對下面的對象數組按元素的 age 屬性順序排序:
var objAry = [ {name: 「Lucy」, age: 28, sex: 「female」}, {name: 「Tom」, age: 26, sex: 「male」}, {name: 「Jordan」, age: 30, sex: 「male」} ]; objAry.sort(function(obj1, obj2) { return obj1.age - obj2.age; }); //排序結果 //[ // {name: 「Tom」, age: 26, sex: 「male」}, // {name: 「Lucy」, age: 28, sex: 「female」}, // {name: 「Jordan」, age: 30, sex: 「male」} //]
4. 克隆數組:
克隆數組?簡單,for循環走起:
var ary = [1, 2, 3, 4, 5], newAry = []; for(var i = 0; i< arr.length; i++) { newAry.push(ary[i]); } console.log(newAry); //[1, 2, 3, 4, 5]
完成任務,可是每次這麼克隆敲鍵盤但是夠受的了,用點高端簡潔的方法:
var newAry = ary.slice(); //第一種方法 var newAry = ary.concat(); //第二種方法
簡潔有效的完成任務,媽媽不再用擔憂個人鍵盤會敲壞了。
完。