字串與陣列
字串和陣列,是很重要且基本的兩個型別,但、為什摸會想把他們擺一起呢?是因為、他們之間有非常有趣的關係。然後、另外打算附上個我個人愛用,但可能有點冷門的使用方式啦~!
所謂字串
直接就開始玩 js 的人類們,可能會無感,或者不太重視型別的語言也可能無感。不過、寫程式的大部份應該都要有感啦~!所謂的字串、就是 字元陣列
,寫 c/c++ 的時候,書上會說有一種 type 叫做 char
但尼找不到 string
~ T UT
|
|
在…. haskell 裡
|
|
眾多的跡象都表示了,字元陣列
就相當於字串,而字串這種形式、應該算是個 sugar 啦~!而這也就代表了~ 只要將字串轉為字元陣列
,那就會有陣列的某些特型了。(所以、有沒有發現 js 的 String 的 method 跟 Array 的重複性好高!)
不過、接下來還是以 js 為主啦~ T UT 以前熟悉的語言現在有點陌生,然後、有些語言又才開始玩~ 為了不誤人子弟,還是就用 js 舉例囉!
字串變陣列的玩法
開始之前當然是要先轉成陣列啦~
|
|
字串玩法 1
其實、字串轉陣列,除非字串有某些規則啦~ 要不、沒有那摸好玩!但、簡單的玩下加解密還是可以的。就是簡單的用個算式,然後來個 loop 啪的算完得到加密結果。(但這、蠻無聊的啦~)
字串玩法 2
對於有意義的字串,比如:名字字組。可以排序什摸的、也可以 filter 啦~ 所有 array 可以用的 method 就都可以用了。但、前提是有規律啦~!
|
|
陣列變字串的玩法
其實、我遇到的問題,絕大部份都是陣列啦~ 因為、一般來說,字串通常都是有意義的,像是名字這類的。想要遇到字串玩法 2其實沒有那摸容易。
js 轉換各種型別其實真的蠻容易的,陣列變字串是我愛用的方法之一。也許大家會疑惑歐!陣列、尼轉成字串是要幹嘛啦~!有意義嗎?不管是煎煮炒炸、陣列都已經很方便用了誒,只要來個 for loop
、 if-else
,再不然、現在的陣列也有 filter
、 forEach
、 map
什摸的、都很好用了呀~!
對、現在的 Array 擁有的 method 已經很多了啦~ 但、我覺得要寫很多啊~ 我不喜歡寫那摸多,有點累….。不過、推薦的陣列,還是以單純的,像字串陣列
、數字陣列
會比較好用。
陣列玩法 1
尋找存在,這是我們很常用的一種判斷,就想知道我對象有沒有在陣列裡面,有的話要幹嘛、沒有又要幹麻。就是個常見到不行情況。
一般大概會這樣做… 吧?再或者真的不知道 indexOf
,可能就真的用 loop
,也許、還會用 filter
,但好像還是 indexOf
比較方便啦!
|
|
字串方式、需要搭配 regexp
服用。(請不要害怕 regexp、regexp 真的是世界上無敵好用的存在之一)
|
|
說到這裡、好像也沒啥必要轉成 string 啊! indexOf
都這摸好用了捏。尼那啥 regexp,用起來好複雜捏!但、我認為他的語意比起 indexOf
要明確多了,什摸 indexOf
還要大於 -1。然後、只是判斷存不存在,也不需要用 match
,我花現很多人都很愛用 match
,但、其實只是想知道存不存在而已,一點也沒有必要 match
吧?在這邊推薦 test
。
陣列玩法 2
在這邊、推薦陣列轉字串再搭配 regexp 的另一個原因是,大多數情況、已經用到了陣列,一定常常要 push
、 pop
這類的操作,為了保持不重複資料,時不時的檢查,對我來說、這是件很麻煩的事情。這情境大概是這樣….
|
|
可想而知、假如在 add
沒有 check ,那、很可能最後的資料會重複歐!經過一連串操作。然後、中間可能還會經過更多其他複雜的操作, indexOf
是可以啦~ 不過、他其實就是從頭開始找到… 看是有沒有找到啦!我不認為在資料多、操作複雜、又只能找到一個的情況下,這種寫法是划算的,而且、我真的很不喜歡語意不明。(直白的說,我就是不喜歡 indexOf 啦~)
所以、我大概都這樣寫。
|
|
這種 remove
的方式雖然看起來比其他方式麻煩很多,但… 勝在尼有多少個、他就幫尼取代掉多少個啊!!!(實在是因為我被陰了很多次啦~) 後來都採取這種做法來移除陣列裡的東西居多。要做 unique 也好做很多啦~!一堆 loop 根本地獄!
甚至、整個 function 就幾乎是以 string 在操作,一直到最後面,需要改回陣列,才會把它轉換成陣列,實在是因為搭配正則太好用了。正則根本就是判斷的救贖~!
結論
其實真的有那摸一點旁門左道啦~!也不止一次有人問我某段程式在幹麻了,可是、真的好用啊~ T UT 雖然可能不是那摸直觀,但、勝在可以少打很多字、沒有很多的 loop ,程式還可以短上一大截,效能可能有好一些,所以、我完全可以接受只是語意有點不值關啦~!但、我已經習慣了、所以、對我來說很直觀….(<– 超壞)