標籤:改變 順序 數字 串連 hit 儲存 func 包含 查詢
在JavaScript 中,除了Object 之外,Array 類型應該是最常用的類型了。它的每一項可以儲存任何類型的資料,也就是說,可以用數組的第一個位置來儲存字串、第二個位置來儲存數值、第三個位置來儲存一個對象等。
JavaScript 中數組的一些常用方法
1,有一些方法在調用的時候會改變調用它們的對象自身的值,如:push、pop、unshift、shift、sort、splice、reverse等, 下面說一下各個方法的功能。
push() 方法是在數組的末尾添加一個或多個元素,並放回新數組的長度。
let arr=["red","green","blue"];let len=arr.push("yellow");console.log(arr);//["red","green","blue","yellow"]
console.log(len);//4
pop() 方法是在數組的末尾刪除一個元素,並且返回這個元素。
let arr=["red","green","blue","yellow"];let elem=arr.pop();console.log(arr);//["red", "green", "blue"]console.log(elem);//"yellow"
unshift() 方法是在數組的開始處添加一個或多個元素,並返回新數組的長度
let arr=["red","green","blue"];let len=arr.unshift("yellow","white");console.log(arr);//["yellow","white","red","green","blue"]console.log(len);//5
shift() 方法是刪除數組的第一個元素,並返回該元素
let arr=["red","green","blue"];let elem=arr.shift();console.log(arr);//["green","blue"] console.log(elem);//"red"
sort() 方法是對數組中的元素進行排序,並返回當前數組。預設排序次序是根據字串的Unicode 碼點
let arr=["red","green","blue"];let result=arr.sort();console.log(arr);//["blue","green","blue"]console.log(result);//["blue","green","blue"]
let arrNum=[10,5,20,7,1];
let resultNum=arrNum.sort();//這裡比較時數字會先被轉換為字串
console.log(arrNum);//[1, 10, 20, 5, 7]
console.log(resultNum);//[1, 10, 20, 5, 7]
sort() 方法有一個參數,是可以按指定規則進行排序的函數。如果指明了比較函數,那麼數組會按照該比較函數的傳回值進行排序。如compareFunction( a , b ),即a 和 b 是兩個將要比較的元素,傳回值如下。
1,如果 a < b ,則傳回值小於 0 ,即 a 排在 b 的前面
2,如果 a = b ,則傳回值等於 0 。
3,如果 a > b ,則傳回值大於 0 。即 a 排在 b 的後面
如果比較的數組全是數字,可以比較函數可以簡單的以 a - b ,如下的數組將會以升序排列
let arrNum=[10,5,20,7,1];let result=arrNum.sort(compareNumbers);function compareNumbers(a,b){ return a-b;}console.log(arrNum);//[1, 5, 7, 10, 20]console.log(result);//[1, 5, 7, 10, 20]
splice() 方法通過刪除現有元素和添加新元素改變數組的值。傳回值是被刪除元素組成的數組。如果只刪除了一個元素,則返回只包含這個元素的數組。如果沒有刪除元素,則返回空數組。該方法有三個參數,第1個參數表示添加/刪除的元素的位置。第2個參數表示要刪除的元素的個數,如果為0,則表示不刪除元素。第3個參數表示要添加的元素的內容。第2個參數和第3個參數是可選的,如果省略表示刪除從第1個參數到數組末尾的元素。
let arr=[1,2,3,4,5,6,7];let result=arr.splice(3);console.log(arr);//[1, 2, 3]console.log(result);//[4, 5, 6, 7]
let result=arr.splice(3,1);console.log(arr);//[1, 2, 3, 5, 6, 7]console.log(result);//[4]
let result=arr.splice(3,1,8,9);console.log(arr);//[1, 2, 3, 8, 9, 5, 6, 7]console.log(result);//[4]
let result=arr.splice(-3,1,8,9);
console.log(arr);//[1, 2, 3, 4, 8, 9, 6, 7]
console.log(result);//[5]
reverse() 方法將數組的元素位置進行顛倒,即原先的第一個元素變為最後一個,原先的最後一個元素變為第一個
let arr=["red","green","blue"];let result=arr.reverse();console.log(arr);//["blue", "green", "red"]console.log(result);//["blue", "green", "red"]
2,下面的方法絕對不會改變調用它們的對象的值,只會返回一個新的數組或者一個其它的期望值。如:concat、 join、slice、indexOf、lastIndexOf、toString
concat() 方法返回一個由當前數組和其它若干個數組或者若干個非數組值組合而成的新數組。此方法不會改變現有的數組而是返回一個新的數組
let arr=["red","green","blue"];let conArr=["yellow","white"];let result=arr.concat(conArr);console.log(arr);//["red", "green", "blue"]console.log(result);//["red", "green", "blue", "yellow", "white"]
join() 方法將數組元素串連到一個字串中
let arr=["red","green","blue"];let result=arr.join();//可以指定一個分隔字元 預設為 ,console.log(arr);//["red", "green", "blue"]console.log(result);//red,green,bluelet resultSep=arr.join("#");//指定分隔字元為 #console.log(resultSep);//red#green#blue
slice() 方法截取當前數組中的一部分元素組成一個新的數組。(截取的部分包括開始不包括結束)
let arr=[1,2,3,4,5,6,7];let sliceArr=arr.slice(2,5);//數字代表索引,從0開始console.log(arr);//[1, 2, 3, 4, 5, 6, 7]console.log(sliceArr);//[3, 4, 5] //參數是可選的,如果不寫begin,從0開始。不寫end,會截取到數組末尾。//如果 begin 為負數,則表示從數組的倒數第幾個元素開始截取,slice(-2)表示截取數組中倒數第2個元素到最後一個元素(包含最後一個元素)。//如果 end 為負數,則表示在數組中倒數第幾個元素結束截取,slice(-2,-1)表示截取了倒數第2個元素到倒數第1個元素(不包含最後一個元素)let sliceArr=arr.slice(-3,-1);
console.log(sliceArr);//[5, 6]
indexOf() 方法返回第一個與指定值相等的元素的索引,如果找不到這樣的元素,則返回 -1;
let arr=["red","green","blue","white","green"];let result=arr.indexOf("blue");console.log(result);//2let result=arr.indexOf("yellow");console.log(result);//-1
//indexOf() 方法有可選的第二個參數,表示從何處開始尋找。如果該索引值大於或等於數組長度,則表示不在數組裡尋找,返回 -1。
如果參數中提供的是一個負值,則將其作為數組長度的一個抵消,即-1表示從最後一個元素開始尋找,-2表示從倒數第2個元素開始尋找,以此類推。
注意:如果參數中提供的是一個負值,並不改變其尋找順序,尋找順序仍然是從前向後尋找數組。如果抵消後的索引值仍小於0,則整個數組都將會被查詢。console.log(arr.indexOf("blue",10));//-1console.log(arr.indexOf("green",2));//4console.log(arr.indexOf("blue",-2));//-1console.log(arr.indexOf("red",-10));//0
lastIndexOf() 方法從數組的最後一位元素開始尋找與指定元素相等的元素的索引,如果找不到則返回 -1 。
let arr=["red","green","blue","white","green"];console.log(arr.lastIndexOf("green"));//4
//第2個參數為尋找位置。預設為數組的長度減 1,即整個數組都將被尋找。
如果該值大於或等於數組的長度,則整個數組會被尋找。如果為負值,將視為數組末尾向前的位移。
即使該值為負,數組仍然會從末尾向前尋找。如果該值為負時,絕對值大於數組長度,則返回 -1,即數組不會被尋找。console.log(arr.lastIndexOf("green",1));//1console.log(arr.lastIndexOf("white",-2));//3
toString() 方法返回一個有所有數組元素組合而成的字串
let arr=[1,2,3,4,5];let result=arr.toString();console.log(arr);//[1, 2, 3, 4, 5]console.log(result);//1,2,3,4,5
另外還有一些迭代 方法和繼承的方法在這裡就不說了。(由於水平和能力有限,如有錯誤還請多多指正)
JavaScript 中數組的一些常用方法