js字符串/數組常用方法總結


js字符串/數組常用方法

字符串

charAt

str.charAt(index);
從一個字符串中獲取索引為index的字符。

startsWith, endsWith

str.endsWith(searchString[, length])

length 可選。作為 str 的長度。默認值為 str.length。

endsWith()方法用來判斷當前字符串是否是以另外一個給定的子字符串“結尾”的,根據判斷結果返回 true 或 false。

語法: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)。原始數組不會被改變。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM