js字符串/數組常用方法
字符串
charAt
str.charAt(index);
從一個字符串中獲取索引為index的字符。
startsWith, endsWith
str.endsWith(searchString[, length])
length 可選。作為 str 的長度。默認值為 str.length。
endsWith()方法用來判斷當前字符串是否是以另外一個給定的子字符串“結尾”的,根據判斷結果返回 true 或 false。
search
語法:str.search(substr|regexp)
說明:查找滿足字符串substr或者正則表達式regexp的str中第一次出現的索引,Eugene沒找到返回-1.
PS:如果傳入一個非正則表達式對象,則會使用 new RegExp(obj) 隱式地將其轉換為正則表達式對象。
match
語法:str.match(regexp);
regexp:一個正則表達式對象。如果傳入一個非正則表達式對象,則會隱式地使用 new RegExp(obj) 將其轉換為一個 RegExp 。如果你未提供任何參數,直接使用 match() ,那么你會得到一個包含空字符串的 Array :[""] 。
說明:返回一個根據正則表達式regexp查找str的所有匹配的字符串,然后將匹配的字符串集合以數組形式返回。
如果使用g標志,則將返回與完整正則表達式匹配的所有結果;
如果未使用g標志,則僅返回第一個完整匹配及其相關的捕獲組
捕獲組:
groups: 一個捕獲組數組 或 undefined(如果沒有定義命名捕獲組)。
index: 匹配的結果的開始位置
input: 搜索的字符串.
padStart, padEnd
str.padStart(targetLength [, padString])
padString 填充字符串。默認為空字符串。
用另一個字符串填充當前字符串(重復,如果需要的話),以便產生的字符串達到給定的長度。
replace
語法:str.replace(regexp|substr, newSubStr|function)
說明:返回一個由替換值替換一些或所有匹配的模式后的新字符串。他不會改變原字符串。
regexp|substr:將要被替換的字符串或者正則表達式
newSubStr|function:新的字符串或者一個用來創建新子字符串的函數。
只會替換第一個匹配到的字符串,除非用正則+g的形式。
split
語法:str.split([separator[, limit]])
說明:以separator為分割標志,分割出limit個數的字符串。沒有limit的話,全部分割。
search
str.search(str/regexp)
返回字符串/正則表達式在字符串中首次匹配項的索引,否則返回 -1。
'aaababcc'.search('abc') // 4
substring
語法:str.substring(indexStart[, indexEnd])
說明:返回一個字符串在開始索引到結束索引之間的一個子集, 或從開始索引直到字符串的末尾的一個子集。
- 如果 indexStart 等於 indexEnd,substring 返回一個空字符串。
- 如果省略 indexEnd,substring 提取字符一直到字符串末尾。
- 如果任一參數小於 0 或為 NaN,則被當作 0。
- 如果任一參數大於 stringName.length,則被當作 stringName.length。
- 如果 indexStart 大於 indexEnd,則 substring 的執行效果就像兩個參數調換了一樣。見下面的例子。
toUpperCase, toLowerCase
trim, trimStart, trimEnd
語法:str.trim()
說明:去除str兩端空格。trim() 方法並不影響原字符串本身,它返回的是一個新的字符串。
相應的:
str.trimLeft(); // 去除str左邊空格
str.trimRight(); // 去除str右邊空格
valueOf(), toString
str.valueOf()
str.toString()
返回指定字符串對象的字符串形式。
數組
isArray
Array.isArray(obj)
檢測參數是不是數組對象Array。
of
創建一個具有可變參數數量的新數組。
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of(undefined); // [undefined]
forEach
特點:無返回值(返回 undefined),純遍歷數組中的元素。
注意:不能使用element直接修改數組的元素,可以使用arr[index]來修改。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var str = "";
// function (element,index,array)
// element:數組元素的值
// index:索引
// array:調用這個方法的整個數組對象(一般不用)
arr.forEach(function (ele,index,array) {
str+=ele;
});
console.log(str); // 關長張飛趙子龍馬超黃忠
注意:
只寫一個參數就是 element;
寫兩個參數就是 element 和 index
寫三個參數就是: element 和 index 和 array本身。
map
創建一個新數組,其結果是該數組中的每個元素都調用一次提供的函數后的返回值。
注意:map可以直接使用ele修改數組里面的值。這是與forEach的區別,
還有一個區別是map有返回值,而forEach沒有。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var arr2 = arr.map(function (ele,index,array) {
return ele+"你好";
})
console.log(arr2); // (5) ["關長你好", "張飛你好", "趙子龍你好", "馬超你好", "黃忠你好"]
every
測試一個數組內的所有元素是否都能通過某個指定函數的測試。返回值是一個 boolean 類型值。而參數是一個回調函數。 參數有三個。名字隨便起,但是表示的意思還是這樣順序的。
特點:只要有一個不滿足條件,就返回false。
var arr = ["青花瓷", "一路向北", "軌跡"];
var flag = arr.every(function (ele, index) { // 只要有一個沒滿足條件,就返回false
return ele.length > 2;
});
console.log(flag); // false
some
特點:如果函數結果有一個是true,那么some方法結果也是true。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var flag = arr.some(function (ele,index,array) {
if(ele.length>2){
return true;
}
return false;
})
console.log(flag); // true
filter
創建一個新數組, 其包含通過所提供函數實現的測試的所有元素。
var arr = ["關長","張飛","趙子龍","馬超","黃忠"];
var arr1 = arr.filter(function (ele,index,array) {
return ele.length > 2;
});
console.log(arr1); // ["趙子龍"]
fill
arr.fill(value[, start[, end]])
value:用來填充數組元素的值。
start 可選,起始索引,默認值為0。end 可選,終止索引,默認值為 this.length。
用一個固定值填充一個數組中從起始索引到終止索引內的全部元素。不包括終止索引。
find, findIndex
arr.find(function(item, index, arr) {})
返回數組中滿足提供的測試函數的第一個元素的值。否則返回 undefined。
flat
var newArray = arr.flat([depth])
depth:要提取嵌套數組的結構深度,默認值為 1。
扁平化數組。
var arr1 = [1, 2, [3, 4]];
arr1.flat(); // [1, 2, 3, 4]
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2); // [1, 2, 3, 4, 5, 6]
//使用 Infinity,可展開任意深度的嵌套數組
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// flat() 方法會移除數組中的空項
var arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]
join
將一個數組的所有元素連接成一個字符串並返回這個字符串。
arr.join([separator])
separator 指定一個字符串來分隔數組的每個元素。默認用逗號(,)分隔。如果separator是空字符串(""),則所有元素之間都沒有任何字符。
push, pop, shift, unshift
arr.push(element1, ..., elementN)
arr.pop()
push:將一個或多個元素添加到數組的末尾,並返回該數組的新長度。
pop:從數組中刪除最后一個元素,並返回該元素的值。此方法更改數組的長度。
unshift:將一個或多個元素添加到數組的開頭,並返回該數組的新長度。
shift:從數組中刪除第一個元素,並返回該元素的值。此方法更改數組的長度。
reduce, reduceRight
對數組中的每個元素(從左到右)應用一個函數,將其簡化為單個值。
var arr = [1,2,3,4,5];
var arr2 = arr.reduce(function(a,b){
return a-b; // 1-2-3-4-5 = -13
});
var arr = [1,2,3,4,5];
var arr2 = arr.reduceRight(function(a,b){
return a-b; // 5-4-3-2-1 = -5
});
reverse
arr.reverse()
將數組中元素的位置顛倒,並返回該數組。該方法會改變原數組。
sort
給數組排序(只能通過第一位字母或數字的 unicode 編碼進行排列),返回排序后的數組。
var arr2 = [7,6,15,4,13,2,1];
console.log(arr2); // 7,6,15,4,13,2,1
console.log(arr2.sort()); // 1,13,15,2,4,6,7
解決:可以通過回調函數進行規則設置。
console.log(arr2.sort(function (a,b) {
return a-b; //a-b,從小到大排序,如果是b-a則從大到小排序
}));
splice
array.splice(startIndex [, deleteCount[, additem1[, additem2[, ...]]]])
通過刪除或替換現有元素或者原地添加新的元素來修改數組,並以數組形式返回被修改的內容。此方法會改變原數組。
toString
將數組轉換成字符串。
[1,2,[3,[4,[5]]]].toString() // "1,2,3,4,5"
[1,2,[3,[4,[5, 'aaa']]]].toString() //"1,2,3,4,5,aaa"
[1,2,[3,[4,[5, {a:1} ]]]].toString() //"1,2,3,4,5,[object Object]"
字符串&數組共有
concat
字符串:
str.concat(string2, string3[, ..., stringN])
將一個或多個字符串與原字符串連接合並,形成一個新的字符串並返回。它不影響原字符串。
數組:
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
用於合並兩個或多個數組。此方法不會更改現有數組,而是返回一個新數組。
includes
字符串:
str.includes(searchString[, position])
position 可選。從str字符串的哪個索引位置開始搜尋子字符串,默認為0。
用於判斷一個字符串是否包含在另一個字符串中,返回 true 或 false。
數組:
arr.includes(valueToFind[, fromIndex])
從fromIndex 索引處開始查找 valueToFind。如果為負值,則按升序從 array.length + fromIndex 的索引開始搜 (即使從末尾開始往前跳 fromIndex 的絕對值個索引,然后往后搜尋)。默認為 0。
判斷一個數組是否包含一個指定的值,返回true/false。
indexOf(), lastIndexOf()
字符串:
語法:str.indexOf(searchValue[, fromIndex])
說明:從fromIndex索引開始(可省略。默認為0 )從前往后查找,第一次出現searchValue的索引值。如果沒有找到返回 -1.
語法:str.lastIndexOf(searchValue[, fromIndex])
說明:從fromIndex索引開始(可省略。默認為0 )從前往后查找,最后一次出現searchValue的索引值。如果沒有找到返回 -1。
數組:
arr.indexOf/lastIndexOf(searchValue)
查找數組中有沒有某個元素,找到了返回這個元素在數組中的索引,如果沒找到返回-1。
slice
字符串:
語法:str.slice(beginSlice[, endSlice])
beginSlice
:從該索引(以 0 為基數)處開始提取原字符串中的字符。如果值為負數,會被當做 strLength + beginIndex 看待,這里的strLength 是字符串的長度(例如, 如果 beginIndex 是 -3 則看作是:strLength - 3)
endSlice
:可選。在該索引(以 0 為基數)處結束提取字符串。如果省略該參數,slice() 會一直提取到字符串末尾。如果該參數為負數,則被看作是 strLength + endIndex,這里的 strLength 就是字符串的長度(例如,如果 endIndex 是 -3,則是, strLength - 3)。
說明:提取一個字符串的一部分,並返回一新的字符串,且不會改動原字符串。
數組:
arr.slice(startIndex,endIndex);
返回一個新的數組對象,這一對象是一個由 startIndex和 endIndex 決定的原數組的淺拷貝(包括 startIndex,不包括endIndex)。原始數組不會被改變。