Day04 JavaScript Array(陣列)

更新於 2024/11/04閱讀時間約 6 分鐘


什麼是Array(陣列)

array跟object一樣是一種資料的容器,不同的是array通常用來裝同類別的資料,就像是書架用來收納書。要在書架裡放書跟其他東西也是可以的,但就是有點奇怪,不是大家習慣的做法。

array透過[]宣告。

假設我們要儲存使用者喜歡的顏色這筆資料,每筆資料的類型都是類似的,而且幾乎可以肯定不會只有一組。這時候就很適合用array。

raw-image


觀察array可以看見它的架構:

let array = []


array的好處就是能夠井然有序的管理同類型的資料。

Array資料類型

JavaScript的世界可以說是處處不受限,array裡面想放什麼資料都是允許的。

raw-image


雖然array內通常會放同類型的資料,但由於JS的自由性,如果某人很反社會的話,資料也可以混用,也就是array同時有string, number, boolean

當然,強烈建議不要做這種傻事,除了有被合作夥伴殺掉的風險外,過幾個禮拜後的自己也會恨死自己。很容易忘記裡面到底擺了什麼,也很難瞭解規則。

Array內的Object

除了一般的資料型態外,array裡也可以放object。

假設我們有一筆使用者有關的資料,可以把資料整理成object再放進array。

記得,{}是object的宣告。

記得,{}是object的宣告。

這裡為了方便閱讀換了行,但主要結構還是[]包著{},也就是array裡放object


事實上,許多軟體資料都是由array跟object共同組成。Instagram的貼文是貼文array裡許多的object。大概是像這樣:

貼文資料通常有作者、標題、內文。當然,真實情況資料會更複雜。

貼文資料通常有作者、標題、內文。當然,真實情況資料會更複雜。

存取array資料

跟object不同,array裡沒有資料的標籤可以找資料(不像object的property),我們只能透過array內的編號來存取。是的,array裡放資料的順序可以讓我們定位資料,順序從0開始。

還記得之前提到過的console.log()嗎?它可以讓Console印出東西。這裡我們要用到了。

raw-image

輸入完之後打開Console,可以按Codepen底下的Console按鈕。也可以直接cmd + option + if12 打開瀏覽器的Console。

打開Codepen的Console,可以看見'black'被印出來了!

打開Codepen的Console,可以看見'black'被印出來了!

因為’black’bestColors的第0個,所以它被印出來!

存取array裡object的資料

要存取array資料可以用[],要存取object資料可以用.,我們可以合併使用。

raw-image
存取到array裡第一個object的title。

存取到array裡第一個object的title。

array內建的method

由於array其實是一種特別的object,我們也能透過.去存取property或是內建的method。

另外,神奇的是,在JS的世界裡幾乎所有內容都其實是種object,不管是stringfunction或是number。換句話說,我們都能透過.去存取內建的property或是method。


感謝前人的努力,有很多的method讓我們可以不用自己寫程式的情況下完成複雜的操作。

舉例來說,在宣告一個string後,如果我們想把一串字都變大寫,可以用string內建的method。

raw-image
這個內建的method把字都變大寫了。

這個內建的method把字都變大寫了。

太方便了…

我們不用一個字一個字處理,像其他程式語言在做的那樣,只需要一個method。再一次,感謝前人的努力…


回到array!

Push

其中array的push()可以讓我們把新資料加在最後面。

raw-image
可以看見我們的bestColors array最後多了新增的'white'。

可以看見我們的bestColors array最後多了新增的'white'。



Splice

splice()需要兩個參數,第一個是從哪開始刪除,第二個代表要刪除幾個。

如果我想從bestColors刪除’yellow’,那就是從編號2開始,刪除1個。

raw-image
成功把位在編號2的'yellow'刪除了(編號是從0開始!)。

成功把位在編號2的'yellow'刪除了(編號是從0開始!)。


這裡只是做幾個簡單的示範。諸如此類的method還有很多,有無數個那麼多。我們只需要一步一步在需要用的時候了解、使用即可,不需要每個都熟記。重點是了解array的骨架,還有它的使用情境。

小結

程式語言最棒的就是自動化,當我們把資料放進array後,我們能夠用內建的method一次處理所以相似的資料。目前我們還沒講到這樣的method,不過可以先把這件事放在心上。

在這個單元,我們只需要知道:array跟object一樣,是一種資料的容器,通常用來儲存同樣資料型態的資料(像書架那樣)。而我們會透過[]來存取array的值,透過.使用array內建的method。


接下來,我們會討論JavaScript中的條件判斷。


Resource

今日Codepen

連結

Credits

關於我

我是Erkin, 一個網站開發者。
有任何疑問或是想勘誤的話歡迎聯繫。

avatar-img
0會員
11內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HCY 71的沙龍 的其他內容
今天我們會繼續用CodePen。 為何需要Object(物件) 在開始介紹object之前,我們先來討論object為何需要存在。 想像我們有一筆關於網站使用者的資料,裡面包含使用者名稱、年紀,還有sayHelloToUser()這個function。 我們可以逐個定義、宣告這些資料。
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
歡迎來到「10日 JavaScript」,有鑑於自己先前學習JavaScript的流程過於破碎且凌亂,特別整理了這份文章,包含了基本語法、資料型態、常用函數及JavaScript實作等。希望能幫助到一些需要用到、想要了解JavaScript的人,讓大家不必再走太崎嶇的路。內容會分成10篇,一步步
今天我們會繼續用CodePen。 為何需要Object(物件) 在開始介紹object之前,我們先來討論object為何需要存在。 想像我們有一筆關於網站使用者的資料,裡面包含使用者名稱、年紀,還有sayHelloToUser()這個function。 我們可以逐個定義、宣告這些資料。
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
歡迎來到「10日 JavaScript」,有鑑於自己先前學習JavaScript的流程過於破碎且凌亂,特別整理了這份文章,包含了基本語法、資料型態、常用函數及JavaScript實作等。希望能幫助到一些需要用到、想要了解JavaScript的人,讓大家不必再走太崎嶇的路。內容會分成10篇,一步步
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
本章節的目的是介紹Java中的套件使用,包括如何引用第三方套件和自定義模組,如何創建和使用自定義套件,以及介紹一些常見的Java標準庫套件。這些內容將幫助讀者更好地理解和使用Java的套件系統。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
此篇文章連結 RAM 與 C語言陣列的關係並提供陣列與for-loop 使用的相關教學 前半段為基本電腦觀念、後半段為實作能力的教學
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
本章節的目的是介紹Java中的套件使用,包括如何引用第三方套件和自定義模組,如何創建和使用自定義套件,以及介紹一些常見的Java標準庫套件。這些內容將幫助讀者更好地理解和使用Java的套件系統。
Thumbnail
此章節旨在介紹Java程式語言中的各種資料型別,包括基本型別、引用型別、集合型別、陣列型別、字典型別等。它還講解了如何在Java中進行型別轉換和自定義型別,並提供了相關的程式碼示例。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
本章節旨在介紹 TypeScript 的基本資料型別,包括內建型別、型別轉換、自訂型別、元組、集合、陣列、和字典型別。透過理解和使用這些型別,可以提高代碼的可讀性和可維護性。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val