標籤:刪除 spl more 編碼 unshift item 不同 end 替代
數組
var arr= new Array();arr.push(); //在數組尾部添加一個元素,返回新的長度 *原數組發生變化arr.pop(); //刪除最後一個元素,返回的是被刪除的元素 *原數組發生變化arr.unshift(); //在頭部添加一個元素,返回長度 *原數組發生變化arr.shift(); //刪除數組第一個元素,返回被刪除的元素 *原數組發生變化arr.concat(); //添加元素或數組,返回一個一維數組,可用來合并數組arr.join(); //將數組內的元素用()內的符號串連起來返回一個字串arr.reverse(); //顛倒數組中的元素 *原數組發生變化arr.sort(); //將數組元素排序,如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序 *原變arr.slice(x,y); // 返回數組中的一部分,根據下標,前包後不包 arr.splice();//例arr.splice(x); //數組保留x位,其餘的刪除arr.splice(2,0,100); //在arr第2個元素後面,刪除0個,插入100,返回的是被刪除的元素
es6新增
(1)複製數組
// 寫法一const a2 = [...a1];// 寫法二const [...a2] = a1;
(2)合并數組
// ES5[1, 2].concat(more)// ES6[1, 2, ...more]
(3)字串
擴充運算子還可以將字串轉為真正的數組。
[...‘hello‘]// [ "h", "e", "l", "l", "o" ]
Array.of方法用於將一組值,轉換為數組
Array.of基本上可以用來替代Array()或new Array(),並且不存在由於參數不同而導致的重載。它的行為非常統一。
Array.of(3, 11, 8) // [3,11,8]
copyWithin在當前數組內部,將指定位置的成員複製到其他位置(會覆蓋原有成員),然後返回當前數組。也就是說,使用這個方法,會修改當前數組。
[1, 2, 3, 4, 5].copyWithin(0, 3)// [4, 5, 3, 4, 5]// -2相當於3號位,-1相當於4號位[1, 2, 3, 4, 5].copyWithin(0, -2, -1)// [4, 2, 3, 4, 5]
find,findIndex
數組執行個體的find方法,用於找出第一個合格數群組成員。它的參數是一個回呼函數,所有數群組成員依次執行該回呼函數,直到找出第一個傳回值為true的成員,然後返回該成員。如果沒有合格成員,則返回undefined。
[1, 4, -5, 10].find((n) => n < 0) //-5[1, 5, 10, 15].find(function(value, index, arr) { return value > 9;}) // 10
另外,這兩個方法都可以發現NaN,彌補了數組的indexOf方法的不足。
[NaN].indexOf(NaN)// -1[NaN].findIndex(y => Object.is(NaN, y))// 0
fill使用給定值,填充一個數組。
[‘a‘, ‘b‘, ‘c‘].fill(7)// [7, 7, 7]new Array(3).fill(7)// [7, 7, 7]
fill方法還可以接受第二個和第三個參數,用於指定填充的起始位置和結束位置。
[‘a‘, ‘b‘, ‘c‘].fill(7, 1, 2)// [‘a‘, 7, ‘c‘]
數組執行個體的findIndex方法的用法與find方法非常類似,返回第一個合格數群組成員的位置,如果所有成員都不符合條件,則返回-1。
entries(),keys()和values()——用於遍曆數組。它們都返回一個遍曆器對象,可以用for...of迴圈進行遍曆,唯一的區別是keys()是對鍵名的遍曆、values()是對索引值的遍曆,entries()是對索引值對的遍曆。
for (let index of [‘a‘, ‘b‘].keys()) { console.log(index);}// 0// 1for (let elem of [‘a‘, ‘b‘].values()) { console.log(elem);}// ‘a‘// ‘b‘for (let [index, elem] of [‘a‘, ‘b‘].entries()) { console.log(index, elem);}// 0 "a"// 1 "b"
includes表示某個數組是否包含給定的值
[1, 2, 3].includes(2) // true[1, 2, 3].includes(4) // false[1, 2, NaN].includes(NaN) // true
該方法的第二個參數表示搜尋的起始位置,預設為0。如果第二個參數為負數,則表示倒數的位置,如果這時它大於數組長度(比如第二個參數為-4,但數組長度為3),則會重設為從0開始。
[1, 2, 3].includes(3, 3); // false[1, 2, 3].includes(3, -1); // true
字串
var str=new String("abvdefg");str.indexOf(‘abc‘); //返回指定字元第一次出現的位置,沒有返回-1str.lastIndexOf(‘w‘); //返回指定字元最後一次出現的位置,沒有返回-1str.slice(startIndex,endIndex); //返回匹配到的字串,前包後不包str.substr(startIndex,length); //返回一個字串str.charAt(x); //返回指定索引位置的字元str.charCodeAt(); //返回在指定的位置的字元的 Unicode 編碼。str.split(); //把字串分割為字串數組,()內可寫Regex(‘‘)將每個元素按照數組中的每個元素分割str.toLowerCase(); //把字串轉換為小寫。str.toUpperCase(); //把字串轉換為大寫
es6新增
//for...of字串遍曆器介面for(let item of str){ console.log(item)}str.includes(x) //返回布爾值,表示是否找到了參數字串。str.startsWith(x) //返回布爾值,表示參數字串是否在原字串的頭部。str.endsWith(x) //返回布爾值,表示參數字串是否在原字串的尾部。這三個方法都支援第二個參數,表示開始搜尋的位置,參數如果是小數,會被取整。。如:str.startsWith(‘f‘, 2) // true使用第二個參數x時,endsWith的行為與其他兩個方法有所不同。它針對前x個字元,而其他兩個方法針對從第x個位置直到字串結束。str.repeat(x); //返回一個新字串,表示將原字串重複x次。padStart(),padEnd如果某個字串不夠指定長度,會在頭部或尾部補全,一共接受兩個參數,第一個參數用來指定字串的最小長度,第二個參數是用來補全的字串。‘x‘.padStart(4, ‘ab‘) // ‘abax‘‘x‘.padEnd(5, ‘ab‘) // ‘xabab‘如果原字串的長度,等於或大於指定的最小長度,則返回原字串。‘xxx‘.padEnd(2, ‘ab‘) // ‘xxx‘如果省略第二個參數,預設使用空格補全長度。‘x‘.padStart(4) // ‘ x‘如果用來補全的字串與原字串,兩者的長度之和超過了指定的最小長度,則會截去超出位元的補全字串。‘abc‘.padStart(10, ‘0123456789‘) //// ‘0123456abc‘另一個用途是提示字串格式。‘12‘.padStart(10, ‘YYYY-MM-DD‘) // "YYYY-MM-12"‘09-12‘.padStart(10, ‘YYYY-MM-DD‘) // "YYYY-09-12"
JavaScript -- 常用的數組及字串方法