工作中常用的字串和陣列方法

游向戈壁滩的鱼發表於2024-11-27
1.獲取字串指定位置的值

charAt()和charCodeAt()都可以透過索引來獲取指定位置的值。

tip:你可以使用下標獲取某個位置的字元,但如果是下標越界就會返回undefined,charAt返回空字串

  • charAt()方法獲取到的是指定位置的字元
  • charCodeAt()是獲取指定位置字元的Unicode值
2.檢索字串是否包含特定序列
  • indexof()查詢某個字串,有則返回第一個匹配到的位置,沒有返回-1,第二個引數是開始檢索的位置
  • lastIndexof()查詢某個字串,有則返回最後個匹配到的位置,沒有返回-1,第二個引數是從結尾開始檢索的位置
  • includes()判斷是否包含某個字串,有則返回true,沒有返回false,第二個引數是開始檢索的位置
  • startsWith()/endsWith() 檢測字串是否以指定的字串開始/結束
3.字串擷取
  • slice()推薦使用,可以用負數下標

'abcd'.slice(1,2) // b
'abcd'.slice(1) //bcd
'abcd'.slice(-4,-1) //abc
'abcd'.slice(-5,-1)//abc

  • substring(start,length) 次推薦, 用於在字串中抽取從開始下標開始的指定數目的字元
let str = "Hello, World!";
let substr = str.substring(0, 5); // 擷取從索引 0 到索引 5 之間的字元 左閉右開
console.log(substr); // "Hello"

// 傳入的引數如果有負數會被視為 0
let substr2 = str.substring(-5, 10);
console.log(substr2); // "Hello, Wo"(負數會被當作 0 處理)
  • substr()不推薦
4.字串模式匹配
  • replaceAll()與 replace() 的全域性標誌 g 功能相似

  • replace() 該方法用於在字串中用一些字元替換另一些字元,或替換一個與正規表示式匹配的子串

let str = "abcdef";
str.replace("c", "z") // 輸出結果:abzdef

let str="Mr Blue has a blue house and a blue car";
str.replace(/blue/gi, "red");    // 輸出結果:'Mr red has a red house and a red car'
// 全域性匹配g i不區分大小寫
  • match()檢索字串中與正規表示式匹配的內容,並返回一個陣列。如果沒有匹配項,則返回 null
let str = "The quick brown fox jumps over the lazy dog";
let result = str.match(/the/gi);  // 忽略大小寫的全域性匹配
let result = str.match(/the/i);  // 忽略大小寫的全域性匹配
console.log(result);  // ["The", "the"]
console.log(result);  //[
    "the"
]

  • matchAll() 方法(ES2020 引入)用於返回字串中所有與正規表示式匹配的內容。它會返回一個迭代器(Iterator),每個元素是一個匹配結果的陣列
let str = "cat and cat and cat";
let result = str.matchAll(/cat/g);
for (const match of result) {
  console.log(match);
}
// Output:
// ["cat", index: 0, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 8, input: "cat and cat and cat", groups: undefined]
// ["cat", index: 17, input: "cat and cat and cat", groups: undefined]

  • exec()用於執行一個匹配,並返回匹配到的內容。如果沒有匹配,返回 null。與 match() 不同的是,exec() 可以返回更多的詳細資訊(如捕獲的組)
let regex = /(\d+)-(\d+)-(\d+)/;  // 匹配日期格式
let str = "2024-11-14";
let result = regex.exec(str);
console.log(result);  // ["2024-11-14", "2024", "11", "14"]

  • test() 方法用於判斷字串是否符合正規表示式模式。如果匹配,返回 true,否則返回 false
let regex = /fox/;
let result = regex.test("The quick brown fox");
console.log(result);  // true

  • search()方法用於查詢字串中第一次出現匹配正規表示式的位置。如果匹配成功,返回匹配的第一個位置,否則返回-1
let str = "The quick brown fox";
let index = str.search(/brown/);
console.log(index);  // 10
  • padStart用於頭部補全。該方法有兩個引數,其中第一個引數是一個數字,表示字串補齊之後的長度;第二個引數是用來補全的字串。

    如果原字串的長度,等於或大於指定的最小長度,則返回原字串

    'x'.padStart(1, 'ab') // 'x'
    'x'.padStart(33, 'ab') // 'ababababababababababababababababx'
    //如果省略第二個引數,預設使用空格補全長度:
    'x'.padStart(4) // '   x'
    
判斷一個陣列是不是包含某個值常用方法

1.find/findIndex

const list = [
   {id:1,name:'JK'},
   {id:2,name:'MM'},
   {id:3,name:'SR'}
]
list.find((item)=>item.name==="SB") // 返回這個物件 沒匹配就返回list.findIndex((item)=>item.name==="SB") // 返回這個物件的下標 沒匹配就-1

2.includes

list.some((item)=>item.name==="SB") // 返回布林值

3.reduce

list.reduce((pre,curr)=>item.name==="SB",false) // 返回布林值

相關文章