2022年10月31日 星期一

關於 String.repleace()

關於 String.repleace() 

前言

  今天發現 String 可以直接用正規表達式來覆蓋字串,在此把學習的過程做個紀錄。

內容

範例如下
const p = 'Dog_dog_Dog';
console.log(p.replace( /Dog/i , 'Cat'));//"Cat_dog_Dog"
console.log(p.replaceAll( /Dog/ig , 'Cat'));//"Cat_Cat_Cat"

用法很簡單,以前的 String.repleace()  的引數 1 輸入的是字串,只要直接輸入正則表達式就可得到結果,使用 repleace() 時,因為只會替代第一個符合條件的結果,所以只有開頭換了,如果要全換,一樣要使用 repleaceAll() ,引數一樣輸入正則表達式,但要注意一下,正則表達式在使用 repleaceAll() 時一定要用 'g' 這個參數,如果不使用會報錯,由於範例有使用 'i' 參數來無視大小寫,所以所有的結果都被交換了。


參考資料

2022年10月24日 星期一

關於 String.at()

 關於 String.at()

前言

  在先前的 關於 JavaScript 的 使用負值當索引的注意事項 提過 Array.at() ,今天發現 String 也可以使用,在此把學習的過程做個紀錄。


內容

  範例如下

let str = 'abcdefg';
console.log( str.at(-2) );// "f"
let str1 = str.slice(3,5);
console.log(str1);// "de"
//Follow code has trap...
let str2 = str.slice(-2,0);
console.log(str2);// ""
//
let str3 = str.slice(-2);
console.log(str3);// "fg"
//


用法跟 Array.at() 一樣,只是這次是對 String 來操作,跟 Array 一樣,在 Slice() 的時候會有不太直覺的操作,就像範例的"str2",幸運的是它和 Array 的行為是一致的,只要把字串想成是字元的陣列就可以接受了。


參考資料

[ developer.mozilla.org ] String.prototype.at()


相關文章與資料

關於 JavaScript 的 使用負值當索引的注意事項

2022年10月17日 星期一

關於 String.indexOf()

 關於 String.indexOf()

前言

  最近發現 String 可以直接搜尋字串,在此做個紀錄。


內容

  範例如下

const str = 'Blue Whale';
console.log( str.indexOf('Blue') );      
console.log( str.indexOf('Blute') );     
console.log( str.indexOf('Whale', 0) );  
console.log( str.indexOf('Whale', 5) );  
console.log( str.indexOf('Whale', 7) ); 
// 0
// -1
// 5
// 5
// -1


使用的方法很簡單,只需把要找的字串當引數即可,如範例的第一次與第二次的使用,回傳的結果是索引值,如果找不到會回傳"-1",第三次以後會輸入第二個引數,這第二個引數是指定從那個索引值開始找,可以把不輸入引數就是第二個引數輸入 0 的結果。


參考資料

[ developer.mozilla.org ] String.prototype.indexOf()

2022年10月10日 星期一

關於 Array.every()

 關於 Array.every() 

前言

  最近看到 Array.every()  ,抽空做個學習,在此做個紀錄。


內容

  範例如下

const isBelowThreshold = function(currentValue) { 
  //console.log(currentValue);
  return currentValue < 30
};

const array1 = [1, 30, 39, 49, 10, 13];

console.log(array1.every(isBelowThreshold));

//
console.log(array1.find( (element)=>element >= 30) === undefined );


Array.every()  的功能是用來對陣列的每個元素做檢查用的,檢查使用的是個 funciton ,必須還傳 true 或 false ,接著就透過這個 function 來對每個元素做檢查,在"isBlowThreshold"裡使用 console.log() 可以發現會從頭開始檢查,當回傳是 false 的時候就會終止,這讓我想到最近學的 Array.find() ,所以範例用 Array.find() 也實現了一樣的效果,要注意的是檢查的條件也一點點改變。這個功能幾乎可以被 Array.find() 給替代,而且 Array.every() 只支援從頭開始檢查,而 Array.find() 卻可以透過 Array.findLast() 來從尾開始檢查,所以可以的話就用 Array.find() 來替代吧。


參考資料

[ developer.mozilla.org ] Array.prototype.every()


相關文章與資料

關於 Array.find()


2022年10月3日 星期一

關於 Array.flat()

 關於 Array.flat() 

前言

  最近看到 Array.flat()  ,抽個空作個學習,在此做個紀錄。


內容

  範例如下

const arr1 = [0, 1, 2, [3, 4] ];

console.log(arr1.flat());

const arr2 = [5, 6, [7], [[[8, 9]]]];

console.log(arr2.flat(3));
// [0, 1, 2, 3, 4]
// [5, 6, 7, 8, 9]


Array.flat()  的功能是擺陣列裡的陣列展開,可以看到範例的第一次使用後,後方的陣列被"展開"了,第二次使用時有輸入一個引數,這個引數是用來設定最多展開的次數,所以後方的"[[[8,9]]]"就會直接被展開,也可以把ˇ不輸入引數時想成"flat(1)"。


參考資料

[ developer.mozilla.org ] Array.prototype.flat()