給數組隨機排序

隨機排序

Array.prototype.shuffle = function() {
    var input = this;

    for (var i = input.length-1; i >=0; i--) {

        var randomIndex = Math.floor(Math.random()*(i+1)); 
        var itemAtIndex = input[randomIndex]; 

        input[randomIndex] = input[i]; 
        input[i] = itemAtIndex;
    }
    return input;
}

var tempArray = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
tempArray.shuffle();

// and the result is...
alert(tempArray); 

添加數組項

給數組末尾添加一個或多個數組項:

var arr = [];
arr.push('a','b');
console.log(arr); // ['a','b']
在數組的前面添加一個或多個數組項:
var arr = ['a','b'];
arr.unshift(1,2);
console.log(arr); // [1, 2, "a", "b"]
使用splice()方法給數組添加數組項:
var arr = ['a','b','c',1,2];
arr.splice(2,0,'d','c','e');//在索引爲2處,0表示不刪除,插入d、c、e
console.log(arr); // ["a", "b", "d", "c", "e", "c", 1, 2]
使用concat()方法可以給數組添加數組項,只不過使用這種方法不會改變原數組:

var arr = ['a','b','c'];
var arr2 = arr.concat('d',1,2,['e',3]);
console.log(arr); // ["a", "b", "c"]
console.log(arr2); // ["a", "b", "c", "d", 1, 2, "e", 3]

刪除數組項

從數組的末尾刪除一個數組項:
var arr = ['a','b','c','d',1,2];
arr.pop();
console.log(arr); // ["a", "b", "c", "d", 1]
刪除數組的第一項:
var arr = ['a','b','c','d',1,2];
arr.shift();
console.log(arr); // ["b", "c", "d", 1, 2]
給一個數組中刪除多個數組項,只不過不同的是,slice()不會影響原數組,只是會在原數組基礎上創建一個數組副本:
var arr = [1,2,3,4,'a','b'];var arr2 = arr.slice(2);
console.log(arr); // [1, 2, 3, 4, "a", "b"]
console.log(arr2); // [3, 4, "a", "b"]console.log(arr3); // ["a", "b"]
splice()方法除了能給數組添加數組項之外,還可以給數組刪除數組項,會改變原數組:
var arr = [1,2,3,4,'a','b','c'];
var arr2 = arr.splice(2,2); //索引爲2處,開始刪除2項
console.log(arr); // [1, 2, "a", "b", "c"]
console.log(arr2); // [3, 4]
數組的查詢提取:

var arr = [1,2,3,4,5,6];
var arr2 = arr.slice(-3);
console.log(arr); // [1, 2, 3, 4, 5, 6]
console.log(arr2); // [4, 5, 6]

複製數組

錯誤實現:
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1; 
array1.length = 0; 
alert(array2); //返回爲空
這種做法是錯的,因爲javascript分原始類型與引用類型(與java、c#類似)。Array是引用類型。array2得到的是引用,所以對array1的修改會影響到array2。

使用slice()
可使用slice()進行復制,因爲slice()返回也是數組。
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1.slice(0); 
array1.length = 0; 
alert(array2); //返回1、2、3  

使用concat()
注意concat()返回的並不是調用函數的Array,而是一個新的Array,所以可以利用這一點進行復制。
var array1 = new Array("1","2","3"); 
var array2; 
array2 = array1.concat(); 
array1.length = 0; 
alert(array2); //返回1、2、3 

總結

這裏簡單的整理了一個數組的增、刪、改、查的相關方法。簡單的總結一下:
增加數組項方法:除了直接改變數組項的值和修改數組的length給數組添加數組項方法之外,還可以使用push()、unshift()、concat()和splice()添加數組項
刪除數組項方法:刪除數組項方法有pop()、shift()、slice()和splice()方法
改變數組項方法:在數組中主要通過splice()方法來改變數組項

查詢數組項方法: 查詢數組項方法其實就是對數組做查詢提取功能,主要使用的方法是slice()方法

複製數組注意,Array是引用類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章