javascript 常用的數組操作

join()

Array.join(/* optional */ separator) 將數組轉換爲字符串,可帶一個參數 separator (分隔符,默認爲“,”)。

與之相反的一個方法是:String.splict() ,將字符串分隔成若干塊來創建一個新的數組。

reverse()

Array.reverse(),顛倒數組元素的順序,返回逆向的數組.注意此方法會修改原來數組元素的位置,而不是返回一個新的數組.

sort()

sort() 方法將數組中的元素排序並返回排序後的數組。sort()方法默認是按照字母表順序進行排序的,如果想自定義排序的方式,可以傳入一個比較大小的函數作爲參數,如下所示:

var a = [4,2,8,6];
a.sort(function(a,b){
    return a-b;
});
console.log(a);
在此說明一下比較大小函數的使用:這個函數決定了元素的先後位置。假設第一個參數應該在在前,比較函數應該返回一個小於 0 的值,反之,則返回一個大於 0 的值。

concat()

concat() 方法創建並返回一個數組,返回的數組包含了原始數組裏的元素和concat()裏各個參數。注意concat()是否返回一個新的數組,而不會修改原來的數組。

slice()

slice(start,/* optional */ end) 方法返回指定數組的子數組。此方法有兩個參數,第一個參數指定了開始的位置,第二個參數指定結束的位置,返回的元素索引範圍[start,end)。如果不指定 end,表示返回從 start 到 數組結尾的所有元素。

splice()

splice()方法在數組裏插入或刪除元素。插入或刪除元素時,原有元素的索引會根據需要增加或減少。splice() 方法的第一個參數指定了插入或刪除的位置,第二個參數指定了刪除元素的個數,之後的不定個參數爲添加到數組裏的元素。

var a = [1,2,8,6];
a.splice(1,3);    //刪除元素
console.log(a);    //[1]
a.splice(1,0,2,3,4,5,6);    //往數組裏插入元素 2,3,4,5,6
console.log(a);    //[1,2,3,4,5,6]
如果要刪除數組裏某個指定元素,可以這樣做:
var a = [1,2,8,6];
function remove(a,x){
    for(var i=0,len=a.length;i<len;i++){
        if (a[i] == x) {
            a.splice(i,1);
            return a;
        } 
    }
    return a;
}
console.log(remove(a,2));

push() and pop()

push()方法在數組的結尾添加一個或多個元素,並返回數組新的長度。pop() 方法則相反,它刪除數組裏最後一個元素,減少數組的長度並並返回該刪除的元素。

unshift() and shift()

unshift() 和 shift() 與 push() 和 pop() 方法類似,不同的是,unshift() 是在數組的頭部插入一個或多個的元素,並返回數組新的長度。shift() 方法刪除數組的第一個元素並將其返回。

 

 

以下是在 ECMAScript 5 中新定義了的 9 個操作數組方法: 其功能包括遍歷、映射、過濾、檢測、簡化和搜索數組。

在講解這些方法之前,有必要知道一些 ECMAScript 5 關於數組方法的介紹。首先,多數方法的第一個參數都一個函數,並且會每一個數組元素調用一次該函數。同時該函數可以使用一下三個參數:數組的元素(element),元素的索引(index),和數組本身(array)。通常我們只會用到第一個參數,而忽略其他兩個參數。

遍歷 .forEach(function(element,index,array))

forEach()方法從頭到尾遍歷一次數組元素,爲每個函數調用指定函數。舉例如下:

var a = [1,2,8,6];
var sum = 0;
a.forEach(function(element){
    sum += element;
});
console.log("數組求和 " + sum);

映射 .map(function(element,index,array))

map() 方法的使用方式和forEach() 方法使用類似,不同的是 map()方法會返回一個新的數組。舉例如下:

var a = [1,2,8,6];
var b = a.map(function(element){
    return element + 1;
});
console.log(b); //[2,3,9,7]

過濾 .filter(function(element,index,array))

filter() 方法放回調用數組的一個子數組,其過濾作用。舉例如下:

var a = [1,2,8,6];
var b = a.filter(function(element){
    return element > 3;
});
console.log(b);    //[8,6]

判定 .every((function(element,index,array)) / .some((function(element,index,array))

every 和 some 類似於離散數學的邏輯判定,返回一個布爾值。every() 函數當“所有”都返回true時,才返回 true;some()當有一個返回true時,就返回true。舉例如下:判斷數組是否都爲正數:

var a = [1,2,8,6];
var flag = a.every(function(element){
    return element > 0;
});
console.log(flag);    //true
判斷數組裏是否有偶數:
var a = [1,2,8,6];
var flag = a.some(function(element){
   return element%2 === 0;
});
console.log(flag);    //true

簡化 .reduce(function(v1,v2),value,element,index,array) / .reduceRight(function(v1,v2),value,element,index,array)

遍歷數組,調用回調函數,將數組元素組合成一個值,reduce從索引最小值開始,reduceRight反向。

第0個參數(函數):把兩個值合爲一個,並返回;

第1個參數:函數(第0個參數)的初始值,可以省略。

第2個~第4個參數:數組的元素,索引和數組本身。

舉例如下:

var a = [1,2,8,6];
var result = a.reduce(function(v1,v2){
    return v1+v2;
},10);
console.log(result); // 27

搜索 .indexOf(element) / lastIndexOf(element)

用於查找數組內指定元素位置,查找到第一個後返回其索引,沒有查找到返回-1,indexOf從頭至尾搜索,lastIndexOf反向搜索。

var a = [1,2,8,6];
var index = a.indexOf(2);
console.log(index);    //1
index = a.lastIndexOf(2);
console.log(index);    //1

Array.isArray(o)

該函數用來判斷一個的對象是否是數組對象。

var a = [1,2,8,6];
console.log(Array.isArray(a));    //true
var date = new Date();
console.log(Array.isArray(date)); // false
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章