常用的幾個陣列方法與數學方法

宮商角徵羽發表於2018-05-19

最近準備整理一下幾個比較常用的去重、遍歷函式,發現都在於陣列打交道,順帶整理了一下常用的陣列方法,可能不是很詳盡,歡迎指正。

常用的幾個陣列方法

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()

作用: 擷取陣列 ,將擷取的部分形成新的陣列

說明:

  1. 不會改變原陣列 ,返回值為擷取後的新陣列。
  2. 有兩個引數,第一個引數為開始擷取的位置,第二個引數為結束的位置(第二個引數不寫,預設擷取到陣列末尾)(從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()

作用:

  1. 刪除陣列元素
  2. 新增陣列元素

說明:

  1. 會改變原陣列 ,返回值為擷取後的新陣列。
  2. 有三個引數,第一個引數為開始擷取的位置,第二個引數為擷取的個數,第三個引數為要新增的元素(從0開始數),返回值為被擷取的元素。
  3. 第二個參數列示擷取的個數,可以不寫;如果第二個引數不寫,預設擷取到最後,且第三個引數此時無法使用。
  4. 第三個參數列示要新增的元素(可以是多個),其位置依賴於第一個引數,總是在第一個引數所在位置的元素之前新增元素(也可以理解為要被新增的元素在新陣列中的位置就是第一個引數)

用法: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()

作用:

  1. 連線陣列
  2. 拷貝陣列

說明:

  1. 不會改變原陣列 ,返回值為連線後形成的新陣列。
  2. 如果 () 中不填引數,則表示對陣列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()

作用:將 陣列轉為字串

說明:

  1. 不會改變原陣列 ,返回值為轉換後的字串。
  2. 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()

作用:將 字串轉為陣列

說明:

  1. 不會改變原字串 ,返回值為轉換後的陣列。
  2. 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()

作用: 排序

說明:

  1. 會改變原字串 ,返回值為排序後的陣列。
  2. 預設用字串規則排序(轉換成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);        
複製程式碼

相關文章