1. 程式人生 > 其它 >js陣列操作集合

js陣列操作集合

1. join()

功能:將陣列中所有元素都轉化為字串並連線在一起。

2. reverse()

功能:將陣列中的元素顛倒順序。

3. concat()

功能:陣列拼接的功能 ,返回新陣列,原陣列不受影響。

4. slice()

擷取陣列生成新陣列,原陣列不受影響。
返回的陣列包含第一個引數指定的位置和所有到但不含第二個引數指定位置之間的所有元素。如果為負數,表示相對於陣列中最後一個元素的位置。如果只有一個引數,表示到陣列末尾。

var aa = [1,2,3,4,5,6];
console.log(aa.slice(2)); //[3,4,5,6]
console.log(aa.slice(2,8)); //[3,4,5,6] 超過最大長度,只顯示到最後結果
console.log(aa.slice(2,5)); //[3,4,5]
console.log(aa.slice(2,-1)); //[3,4,5] 相對於倒數第一個之前
console.log(aa.slice(2,-2)); //[3,4] 相對於倒數第二個之前
console.log(aa.slice(3)); //[4,5,6] 一個引數從第三個到最後
console.log(aa.slice(-2));//[5,6] 一個引數負值從倒數第二個到最後
5. splice()

功能:從陣列中刪除元素、插入元素到陣列中或者同時完成這兩種操作。
輸入:第一個引數為指定插入或刪除的起始位置,第二個引數為要刪除的個數。之後的引數表示需要插入到陣列中的元素 。如果只有一個引數,預設刪除引數後邊的所有元素。
輸出:返回一個由刪除元素組成的陣列。
注意:新建了一個數組,並修改了原陣列

var aa = [1,2,3,4,5,6];
console.log(aa.splice(4)); //[5,6]  返回刪除後的陣列
aa; // [1,2,3,4]
console.log(aa.splice(2,2)); //[3,4] 從第二位起刪除兩個元素
aa; //[1,2]
console.log(aa.splice(1,0,7,8)); //[]從第一位起刪除0個元素,新增7,8到原陣列
aa;//[1,7,8,2]
6. push()

在陣列末尾新增一個或多個元素,並返回新陣列長度

7. pop()

從陣列末尾刪除1個元素(刪且只刪除1個), 並返回 被刪除的元素

8. shift()

在陣列開始新增一個或多個元素,並返回新陣列長度

9. unshift()

在陣列開始刪除一個元素(刪且只刪除1個),並返回 被刪除的元素

10. toString()和toLocaleString()

將陣列的每個元素轉化為字串,並且輸入用逗號分隔的字串列表。功能類似join();

11. indexOf()和lastIndexOf()

indexOf() 兩個引數:要查詢的項和(可選的)表示查詢起點位置的索引。其中, 從陣列的開頭(位置 0)開始向後查詢。沒找到返回-1. 返回查詢項的索引值
lastIndexOf() 從陣列的末尾開始向前查詢。返回查詢項的索引值(索引值永遠是正序的索引值),沒找到返回-1

在數學中高階函式聽起來很大上,JavaScript中也有的,其實就是把一個函式作為另一個函式的引數,不要被高階嚇到了,下邊幾種陣列方法都屬於此。

A. sort();

預設情況下sort()方法沒有傳比較函式的話,預設按字母升序,如果不是元素不是字串的話,會呼叫toString()方法將元素轉化為字串的Unicode(萬國碼)位點,然後再比較字元。所以用預設方法排序資料是有問題的。

var arr = [20,10,2,1,3];
arr.sort();// [1, 10, 2, 20, 3]
arr.sort(function(a,b){
  return a-b;    //升序
}); //[1, 2, 3, 10, 20]
arr.sort(function(a,b){
  return b-a;    //降序
}); //[20,10,3,2,1]
B. forEach()

從頭至尾遍歷陣列,為每個元素呼叫指定函式
輸入為一個待遍歷函式,函式的引數依次為:陣列元素、元素的索引、陣列本身

C. map()

呼叫的陣列的每一個元素傳遞給指定的函式,並返回一個新陣列 ,不修改原陣列。

var arr = [2,3,4,5,6];
var bb= arr.map(function(x){
  return x*x;
});
console.log(bb); // [4, 9, 16, 25, 36]
D. filter()

過濾功能,陣列中的每一項執行給定函式,返回滿足過濾條件組成的陣列。
可以巧妙的用來去重

var a = [1,2,3,4,5,6,3,1];
a.filter(function(v,i,self){
  return self.indexOf(v) == i;
});
//[1, 2, 3, 4, 5, 6]
E. every()和some()

every() 判斷陣列中每一項都是否滿足條件,只有所有項都滿足條件,才會返回true。
some() 判斷陣列中是否存在滿足條件的項,只要有一項滿足條件,就會返回true。

var arr = [1, 2, 3, 4, 5, 6];
arr.every(x=>x>0);//return true;
arr.every(x=>x>5);//return false;
arr.some(x=>x>5);//return true;
F. reduce()和reduceRight()

reduce() 兩個引數:函式和遞迴的初始值。從陣列的第一項開始,逐個遍歷到最後
reduceRight() 從陣列的最後一項開始,向前遍歷到第一項

//可以用reduce快速求陣列之和
var arr=[1,2,3,4];
arr.reduce(function(a,b){
  return a+b;
}); //10