JS中運算元組的方法

LLLyyx發表於2017-08-23

js中運算元組的方法有很多,下面儘量做一個較為全面的總結,希望對大家有幫助。

1、join()

Array.join()方法用於將陣列中的元素全部轉化為字串並連線,其返回值為連線後的字串。可選引數將作為分隔元素的字串,若不指定引數,將預設用逗號分隔。示例:

var a = [1,2,3,4,5];
a.join("");             //返回"123"
a.join(" ");            //返回"1 2 3"
a.join();               //返回"1,2,3"
var b = new Array(10);  //length為10的空陣列
b.join('-');            //返回'---------'  9個連字元組成的字串

2、reverse()

Array.reverse()方法用於逆序排列陣列元素,返回的是逆序的陣列(原陣列也被替換成逆序的)。

var a = [1,2,3,4,5];
a.reverse();            //返回[5,4,3,2,1]
console.log(a);         //[5,4,3,2,1]

3、sort()

Array.sort()方法用於序列化元素並返回排序後的陣列(原陣列會被改變)。當不帶引數呼叫該方法時,陣列元素以字母表順序排序。為了按照其他方式排序,需要給sort()方法傳遞一個比較函式。此函式決定了它的兩個引數在排序後的陣列中的先後順序。若返回值小於0,則第一個引數排在前。反之,則第一個引數在後。

var a = ["c","b","a"];
a.sort();               //返回["a","b","c"]
var b = [3,4,1,2,5];
b.sort(functon(a,b){
return a-b;
});                     //返回[1,2,3,4,5]

4、concat()

Array.concat()方法用於“連線”陣列,返回一個新陣列(原陣列並未被修改)。它連線的是陣列的元素,而非陣列本身。

var a = [1,2,3,4,5];
a.concat(7,8);          //返回[1,2,3,4,5,7,8]
a.concat([7,8]);        //返回[1,2,3,4,5,7,8]
a.concat([7,8],[9,10]); //返回[1,2,3,4,5,7,8,9,10]
a.concat(7,[8[9,10]])   //返回[1,2,3,4,5,7,8,[9,10]]  a仍然是[1,2,3,4,5]

5、slice()

Array.slice()方法用於擷取陣列,返回一個子陣列,但不會修改原陣列。它的兩個引數指定了子陣列的起始和末尾的位置(包含起始位置的元素但不含末尾位置的)。若只有一個引數,則返回從此位置到原陣列結尾的所有元素。負引數代表倒數的元素位置,-1代表最後一個元素。

var a = [1,2,3,4,5];
a.slice(2,4);           //返回[3,4]
a.slice(2);             //返回[3,4,5]
a.slice(2,-1);          //返回[3,4]
a.slice(-3);            //返回[3,4,5]

6、splice()

Array.splice()是陣列操作中很“全能”的一個方法,既可以插入元素,又可以刪除元素。需要注意的是,此方法會修改呼叫的陣列。它的第一個引數指定了操作(插入或刪除)的起始位置,第二個引數指定了要刪除的元素個數。若省略第二個引數,則從起始點到結尾的所有元素都被刪除。splice()返回的是一個由刪除元素組成的陣列,若沒有刪除元素就返回一個空陣列。

var a = [1,2,3,4,5];
a.splice(2);            //返回[3,4,5];a是[1,2]
a.splice(0,1);          //返回[1];a是[2]
var b = [1,2,3,4,5];
b.splice(2,0,'a','b');  //返回[];b是[1,2,'a','b',3,4,5]
b.splice(2,2,[1,2],3);  //返回['a','b'];b是[1,2,[1,2],3,3,4,5],不同於concat(),splice()插
                        //入了陣列本身而非其元素   

7、push()&pop()

push()方法在陣列的尾部新增一個或多個元素,並返回陣列新的長度。pop()則相反,它刪除陣列的最後一個元素並返回它刪除掉的值。兩者都修改並替換原始陣列。

var a = [1,2,3,4,5];
a.push(7);              //返回6,a是[1,2,3,4,5,7]
a.pop();                //返回7,a是[1,2,3,4,5]

8、unshift()&shift()

unshift()在陣列的頭部新增一個或多個元素,並將已存在的元素移動到更高的索引位置來獲得足夠的空間,最後返回陣列新的長度。shift()刪除陣列的第一個元素並將其返回,然後把所有隨後的元素下移一個位置來填補陣列頭部的空穴。

var a = [1,2,3,4,5];
a.unshift(0);           //返回6,a是[0,1,2,3,4,5]
a.shift();              //返回0,a是[1,2,3,4,5]

9、forEach()

forEach()方法從頭到尾遍歷陣列,為每個元素呼叫指定的函式,然後給該函式新增三個引數:陣列元素、索引、陣列本身(後兩者是可選的)。

var a = [1,2,3,4,5];
var sum = 0;
a.forEach(function(value){
sum+=value;
});                     //sum = 15

10、map()

map()方法將呼叫的陣列的每個元素傳遞給指定的函式,並返回一個陣列,不修改呼叫的陣列。

var a = [1,2,3,4,5];
a.map(function(x){
return x*x;             //傳遞給map()的函式必須有返回值
});                     //返回[1,4,9,16,25]

11、filter()

顧名思義,filter用於“篩選”,該方法返回的是原陣列的一個子集。傳遞的函式用來進行布林判定,若返回true或能轉化為true的值,則傳遞給該函式的元素就是這個子集的成員。

var a = [1,2,3,4,5];
a.filter(function(x){
return x > 3;
});                     //返回[4,5];可以用始終返回true的函式來壓縮稀疏陣列的空穴

12、every()&some()

every()&some()用於對陣列進行布林判定,傳入的函式作為其判定標準。every()即“對於每一個”:當且僅當所有的元素呼叫判定函式都返回true它才會返回true,some()即“存在”:只要有一個元素呼叫判定函式返回true就返回true。

var a = [1,2,3,4,5];
a.every(function(x){
return x < 3;
});                     //返回false
a.some(function(x){
return x < 3;
});                     //返回true

13、reduce()&reduceRight()

reduce()的作用是對陣列的元素“歸一”。它需要兩個引數,第一個是執行化簡操作的函式,化簡函式的任務就是用某種方法把兩個值組合或化簡為一個值,並返回化簡後的值。第二個引數(可選)是一個傳遞給函式的初始值。
第一次呼叫函式時,第一個引數是初始值(即第二個引數的值),在接下來的呼叫中,這個值是上一次化簡函式的返回值。若沒有設定初始值,則用第一個元素作為其初始值。這樣在第一次呼叫化簡函式時就是用了前兩個元素作為其第一個和第二個引數的值。
reduceRight()的工作原理和reduce()相同,不同的是它按照索引從高到底的順序處理陣列。

var a = [1,2,3,4,5];
a.reduce(function(x,y){
return x + y;
});                     //返回15,陣列求和 

相關文章