最近準備整理一下幾個比較常用的去重、遍歷函式,發現都在於陣列打交道,順帶整理了一下常用的陣列方法,可能不是很詳盡,歡迎指正。
常用的幾個陣列方法
push()
作用:向陣列的 末尾新增元素 (可一次新增多個)
說明: 會改變原陣列 ,返回值為被新增元素後的新陣列長度。
用法:a.push('10')
示例:
let a=[0,1,2,3];
a.push(4); //返回5 (新陣列的長度)
console.log(a); //[0,1,2,3,4]
//新增多個
a.push(5,6); //返回7
console.log(a); // [0,1,2,3,4,5,6]
複製程式碼
unshift()
作用:向陣列的 開頭新增元素 (可一次新增多個)
說明: 會改變原陣列 ,返回值為被新增元素後的新陣列長度。
用法:a.unshift('10')
示例:
let a=[0,1,2,3];
a.unshift(4); //返回5 (新陣列的長度)
console.log(a); //[4,0,1,2,3]
//新增多個
a.unshift(5,6); //返回7
console.log(a); // [5,6,4,0,1,2,3]
複製程式碼
pop()
作用:從陣列的 末尾刪除元素 (一次只能刪除一個)
說明: 會改變原陣列 ,返回值為被刪除的那個元素。
用法:a.pop()
示例:
let a=[0,1,2,3];
a.pop(); //返回3 (被刪除的元素)
console.log(a); //[0,1,2]
複製程式碼
shift()
作用:從陣列的 開頭刪除元素 (一次只能刪除一個)
說明: 會改變原陣列 ,返回值為被刪除的那個元素。
用法:a.shift()
示例:
let a=[0,1,2,3];
a.shift(); //返回0 (被刪除的元素)
console.log(a); //[1,2,3]
複製程式碼
slice()
作用: 擷取陣列 ,將擷取的部分形成新的陣列
說明:
- 不會改變原陣列 ,返回值為擷取後的新陣列。
- 有兩個引數,第一個引數為開始擷取的位置,第二個引數為結束的位置(第二個引數不寫,預設擷取到陣列末尾)(從0開始數,包含第一個位置的元素但不包含第二個位置的元素)。
用法:a.slice(1[,2])
//[]內為可選引數
示例:
let a=[0,1,2,3,4,5,6,7]
a.slice(2,5); //返回[2,3,4] 從下標為2的元素開始擷取,到下標為5的元素停止(不包含下標為5的元素)
a.slice(2); //返回[2,3,4,5,6,7] 從下標為2的元素擷取到陣列末尾
console.log(a); //[0,1,2,3,4,5,6,7](slice()不改變原陣列,a無變化)
複製程式碼
splice()
作用:
- 刪除陣列元素
- 新增陣列元素
說明:
- 會改變原陣列 ,返回值為擷取後的新陣列。
- 有三個引數,第一個引數為開始擷取的位置,第二個引數為擷取的個數,第三個引數為要新增的元素(從0開始數),返回值為被擷取的元素。
- 第二個參數列示擷取的個數,可以不寫;如果第二個引數不寫,預設擷取到最後,且第三個引數此時無法使用。
- 第三個參數列示要新增的元素(可以是多個),其位置依賴於第一個引數,總是在第一個引數所在位置的元素之前新增元素(也可以理解為要被新增的元素在新陣列中的位置就是第一個引數)
用法:a.splice(1[,2[,3[,[···]]]])
//[]內為可選引數
示例:
let a=[0,1,2,3,4,5,6,7]
//刪除陣列元素
a.splice(2,2); //返回[2,3] (從下標為2的元素開始擷取兩個元素)
console.log(a); //[0, 1, 4, 5, 6, 7]
a.splice(3); //返回[5, 6, 7] (從下標為3的元素開始擷取到陣列末尾)
console.log(a); //?[0, 1, 4]
//新增陣列元素
a.splice(2,0,9); //返回[], 從下標為2的元素開始擷取0個元素,並在下標為2的元素之前新增新的元素“9”
console.log(a); //[0, 1, 9, 4]
//新增多個元素
a.splice(2,0,10,11,12); //返回[], 從下標為2的元素開始擷取0個元素,並在下標為2的元素之前新增新的元素“10”,“11”,“12”
console.log(a); //[0, 1, 10, 11, 12, 9, 4]
//修改陣列元素(其實就是先刪除要修改的元素,在新增目標元素)
console.log(a); //[0, 1, 10, 11, 12, 9, 4]
//修改陣列中第三個元素(下標為2),將“10”改為“20”
a.splice(2,1,20); //返回[10],從下標2開始擷取1個元素=>“10”
console.log(a); //[0, 1, 20, 11, 12, 9, 4]
//修改多個元素同理,只是修改第二個元素和第三個元素就好
複製程式碼
reverse()
作用: 翻轉陣列
說明: 會改變原陣列 ,返回值為翻轉後的陣列。
用法:a.reverse()
示例:
let a=[0,1,2,4];
a.reverse(); //返回[4, 2, 1, 0]
console.log(a); //[4, 2, 1, 0] 原陣列改變
複製程式碼
concat()
作用:
- 連線陣列
- 拷貝陣列
說明:
- 不會改變原陣列 ,返回值為連線後形成的新陣列。
- 如果
()
中不填引數,則表示對陣列a的拷貝。(當想使用一個陣列a又不想改變原陣列是可以使用)
用法:a.concat([b[,c[,d[...]]]])
//[]內為可選引數
示例:
let a=[0,1,2];
let b=[5,6,8];
let c=[10,11];
//連線陣列
a.concat(b); //返回[0, 1, 2, 5, 6, 8]
a.concat(b,c); //返回[0, 1, 2, 5, 6, 8, 10, 11]
console.log(a); //[0, 1, 2] 原陣列a不改變
console.log(b); //[5, 6, 8] 原陣列b不改變
//拷貝陣列(例如想得到a的翻轉陣列d卻又不想改變a(防止其他地方使用到a時發生錯誤))
console.log(a); //[0, 1, 2] 原陣列a不改變
let d=a.concat().reverse();
console.log(d); //[2, 1, 0]
console.log(a); //[0, 1, 2] 陣列a並未改變
複製程式碼
join()
作用:將 陣列轉為字串
說明:
- 不會改變原陣列 ,返回值為轉換後的字串。
join()
中可以新增字元,用於連線陣列中的元素。
用法:a.join()
示例:
let a=['hello','java','script']
a.join(); //返回 "hello,java,script"
a.join('-'); //返回 "hello-java-script"
console.log(a); //["hello", "java", "script"] 原陣列未改變
複製程式碼
split()
作用:將 字串轉為陣列
說明:
- 不會改變原字串 ,返回值為轉換後的陣列。
split()
中可以新增字元,用於提供字串拆分標準。
用法:a.split()
示例:
let a="hello-java-script";
a.split(); //返回 ["hello-java-script"] 不提供拆分標準,則直接將字串變為陣列中的一項,返回該陣列
a.join('-'); //返回 ["hello", "java", "script"] 以"-"為標誌,拆分字串
console.log(a); //"hello-java-script" 原字串未改變
複製程式碼
sort()
作用: 排序
說明:
- 會改變原字串 ,返回值為排序後的陣列。
- 預設用字串規則排序(轉換成ACSII碼,逐位比較大小)
用法:a.sort(()=>{})
示例:
let a=[3,5,6,8,11,5,22,6];
a.sort((a,b)=>a-b); //返回[3, 5, 5, 6, 6, 8, 11, 22] 從小到大排序
console.log(a); //[3, 5, 5, 6, 6, 8, 11, 22] 原陣列a改變
a.sort((a,b)=>b-a); //返回?[22, 11, 8, 6, 6, 5, 5, 3] 從大到小排序
console.log(a); //[22, 11, 8, 6, 6, 5, 5, 3] 原陣列a改變
複製程式碼
常用的幾個數學方法
Math.round()
作用:四捨五入
示例:
Math.round(7.6); //8
Math.round(7.4); //7
複製程式碼
Math.floor()
作用:向下取整
示例:
Math.floor(7.6); //7
Math.floor(7.4); //7
複製程式碼
Math.ceil()
作用:向上取整
示例:
Math.ceil(7.6); //8
Math.ceil(7.4); //8
複製程式碼
Math.pow()
作用:冪運算
示例:
Math.pow(2,4); //16 2*2*2*2
Math.round(3,0); //1
複製程式碼
Math.sqrt()
作用:開方
示例:
Math.sqrt(25); //5
Math.sqrt(81); //9
複製程式碼
Math.abs()
作用:取絕對值
示例:
Math.abs(7.6); //7.6
Math.abs(-7.4); //7.4
複製程式碼
Math.random()
作用:隨機數 (取[0,1)之間的隨機數,左閉右開區間)
示例:
//取x-y的隨機數
Math.round(Math.random()*(y-x)+x);
複製程式碼