0%

Day 12

拿到它,先看它是什麼?拿它來做什麼? 再決定。

在複製陣列之前,先理解了 JavaScript 會依資料型別 Primitive type(基本型別)和 Non-primitive type(非基本型別)而有不同的運作方式,我們就可以進一步的來了解,我們常聽到的深拷貝(DeepCopy)和淺拷貝(shallow) 是什麼、在什麼情境下要選擇哪一種複製方法、如何實作出這些深拷貝和淺拷貝。

什麼是拷貝?

在生活中我們最常做的拷貝就是影印,假如我有一份筆記,朋友跟我借去拷貝,當他拿著我的筆記,到影印機前,按下拷貝鍵的那一刻,複製的筆記從機器跑出來,這時「拷貝」這件事就算完成,「我的筆記」和「他影印的筆記」是各自獨立的筆記,之後他要在這份影印的筆記上塗鴉也好、修改也好,也不會影響我的筆記。

Read more »

Day 11

別懷疑,複製就是拷貝,深拷貝淺拷貝就是深複製淺複製,呼~

人家說,如果我們可以和某位朋友一起旅行 30 天,要嘛旅程結束變至親,不然就是變仇人,鐵人賽已經第十天,本人也開始有點了解 Array 這位木訥寡言,但一肚子學問的中年大叔。很難想像,光陣列就可以讓我寫十天寫不盡,即使寫完它,但是後頭還有多少 JavaScript 特性或其他奇怪的東西要了解?不過,只要確定走在進步的路上,那就繼續走吧!

複製到哪個程度?

要說到陣列的複製,得讓我們聊聊 Javascript 是怎麼將型別分類的,原因是這牽涉到記憶體的分配與讀取的方式。在這之前,我們再來複習一下,在前幾天有聊到的 Javascript 資料型別。

Read more »

Day 10

好好的吃頓飯也是一種優雅。刪除也是。

「如何把陣列或元素清空」也要寫一篇? 妳當牛肉麵在寫嗎?
自從有了這本「JavaScript 大全」當枕頭,阿不是,才發現自己真是懵懂無知,但求知識不嫌遲,只能盡量腦補,讓自己盡量處於知道 JavaScript 到底做了什麼的狀態~結論是:路,還很長。

原本以為 Javascript 像某些語言ㄧ樣,可以控制記憶體或把某部分的記憶體釋放出來,就在網路上開始找如何刪除變數的文章,結果搜尋結果清一色是在講,如何「刪除陣列裡的元素」這件事,才發現 JavaScript 似乎沒有完全把變數刪除這件事,我們也看不見記憶體的存取或清空的狀態,只能用一些機制來驗證。結論是對陣列 Array 來說,沒有把陣列刪除變數這件事,似乎就只能把陣列清空,而不能刪除變數。 自己無法作主的人生

Read more »

Day 09

轉大人和轉職ㄧ樣不簡單

這樣一句話「JavaScript 是弱型別語言」 好像出現好幾次了,但它常出現也不是沒有原因,因為我們常常會忘記 JavaScript 會幫我們默默地 偷偷的 把資料轉型別這件事,且轉成它認為是合理的型別,但對我們而言卻是雷… 默默哭泣…

在聊如何轉型別或轉成陣列時,先讓我們來聊聊 JavaScript 的型別轉換這件事吧。

Read more »

Day 08

如果你不是台灣的國民,就不能在台灣投票

Javascript 是弱型別語言,也因為這個特性,在處理資料時 JavaScript 很可能的很好心,一不小心就把資料自動轉型成另一個資料型態了,所以為了避免在使用陣列內建方法或處理陣列時出現錯誤,常常會使用許多方法來判別是否為陣列。如果元素不是陣列,就無法使用陣列專用的函式或做些陣列的處理,因此才會有確認某元素的原型是陣列的需要。

陣列 Array 在 JavaScript 裡的型別是object,這點可以透過 typeof 這個運算符回傳的資訊,來確認某一資料是否為陣列。但是,在物件裡的某一元素是否為陣列,又該怎麼判別? 以下有幾種方法:

Read more »

Day 07

只要有資料,都會有 CRUD ,那陣列呢?

CRUD 是什麼? 能吃嗎?? CRUD 分別代表:建立 Create, 讀取 Read, 更新 Update 和刪除 delete 。 如果資料只能讀不能取,那會很悲慘,就像逛到一間好吃的甜點店,裡面擺滿了好吃的法式甜點,我們無法吃到,也無法買到,那不是很失落? 其實掏錢就可以了。

這一排的第[ ]個位子坐著誰?

要讀取或寫入陣列這件事情,並不是那麼困難,因為陣列是物件的另一種特殊形式,只要使用方括號 [ ],即可指定某個元素,如果陣列裡有物件型態的元素也一樣用這種方式取得。記得方括號是元素的位置,也就是這個元素的所在索引值(index)。

Read more »

Day 06

JavaScript 一定是個女人,有個性、特立獨行、難以理解,還可以ㄧ次做很多事。

有時候思索著,在學習程式的時候,到底是不是應該把我們所知道的知識,更有系統的整理出來?但是當我們在整理我們所學的知識時,要如何知道我們所整理的資料正確性? 有時有理解障礙 尤其程式這東西,在學習時常感到很抽象,很多時候讀了幾遍書上寫的,照著範例實做了,卻還是無法理解真正的含義,這或許和學外語很相似,學習一個新的外國語言,會聽、會寫、會講都會有好幾個階段,也需要時間去消化與沈澱,持續的學習與練習是必要的,直到有一天,當我們突然發現自己聽得懂外國人在說什麼,那種喜悅應該是很難形容的吧?

小小感想,只因今天是週六?鐵人賽已經來到了第六天,我的陣列小菜今天比較清淡喔~來聊聊陣列有幾種。

Read more »

Day 05

一列隊伍有長度,也有各式各樣不同的物種,這才有趣嘛!

length 這個屬性應該算是我們在學 Javascript 的初期,最早開始用的一個屬性,我們常常來用它來當作是跑字串或陣列的迴圈條件,但是,作為 Array 的唯一屬性 length 真的有這麼單純嗎?

我們可以從 Chrome 的開發工具的 console 裡,輸入window.Array.prototype 可以找到它。並試著了解他多一點。

先看一下 NDM 對它的定義:
作為 Array 類型的實例物件的 length 屬性,設置或回傳該陣列中的元素數。 該值是一個無符號的 32 位整數,其數值總是大於陣列中的最高索引。

Read more »

Day 04

這次的鐵人賽,參考書籍有可拿來當枕頭的大犀牛「Javascript 大全」和「你所不知道的 JS」系列為主要參考,學習前端以來深深覺得有些書,程度不到來讀,真的很吃力,本人就是如此。但既然知道這些書都是許多大神推薦的書,那麼就試著了解,不懂的地方透過實作和請教前輩得到答案,也是頗好的學習方式,但本人不才,如有解釋錯誤的地方,還請各位海函啊。

前一篇我們有提到陣列可以做什麼,是不是對陣列有個比較清楚的概念?有些參考書籍會把陣列形容成有很多個格子的抽屜或盒子,這樣去解釋陣列也是頗具體的,但要記得一般來說,每個格子都會有連續的編號,也就是前幾篇提到的索引值(index)是「有序」的這件事情。但到底有序是不是絕對呢?記得曾經看過,把陣列的索引值改成字串的數字作法,例如:let arr = []; arr[“5”] = 42 會有什麼結果呢?我們先賣個關子。

Read more »

Day 03

Que peut faire avec un Array ?
陣列是最早期和重要的資料結構之一,有許多程式都會用到陣列。我們也會拿陣列來實作許多其他的資料結構,像是列表(list)以及字串(string)。

或許是陣列排序的特性,有如電腦中記憶體的一維陣列結構,而索引就像是記憶體的位址是連續的,因此編譯器通常可以針對陣列操作進行最佳化處理。代表順序的索引(index)會有其對應的值(元素),利用這種特性,我們可以輕易的找到某個指定的索引,再來對值做處理。且在一個陣列裡,我們可以放大量的資料,所以當我們要對這一大串的資料做處理,就可以以「批次」的方式,快速地進行處理。

Read more »