JavaScript淺嚐紀錄No.4-Array資料結構處理及應用

更新 發佈閱讀 10 分鐘

資料結構 (data structure)

資料結構是電腦中儲存、組織資料的方式,

陣列資料結構(array data structure

簡稱陣列(Array),是由相同類型的元素(element)的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引(index)可以計算出該元素對應的儲存位址。

物件資料結構

雜湊表(Hash table,也叫哈希表),是根據鍵(Key)直接查詢在記憶體儲存位置的資料結構。也就是說,它通過計算一個關於鍵值的函數,將所需查詢的數據映射到表中一個位置來查詢記錄,這加快了查找速度。這個映射函數稱做雜湊函數,存放記錄的數組稱做雜湊表,也就是物件所使用的key-value pair。

有關物件的相關應用可以參考JavaScript淺嚐紀錄No.5-呈現真實世界的物件該如何運用?


陣列(Array)

宣告及運用

宣告

使用字面表達語法(利用[])來宣告陣列,可以在宣告時賦值或是透過索引值來賦值。

let array = [0,1,2,3,4] //宣告時賦值
let array =[] //空陣列
array[0] = 'red'
array[1] = 'Green'
array[2] = 'Blue'
vocus|新世代的創作平台
  • length 屬性

陣列具有length屬性,提供來存取陣列的長度(索引值是從0開始算,而length屬性計算有幾個值在陣列中,所以是從1開始算),同時也可以透過array.length(永遠比索引大1個數字)作為索引插入新值到原陣列中(會改變原本的陣列內容)。

let array = [0,1,2,3,4] //索引值到4
console.log(array.length) //5
array[array.length] = 5 //索引值5的位置,值是5
  • 陣列尾巴加入或刪除值
    • push() 加入值的方法(會改變原本的陣列內容)
      [array]array.length = 5作用相同,就是將一個新的值加入到原陣列中。
let array = [0,1,2,3,4]
array.push(5)
console.log(array) //[0,1,2,3,4,5]
    • pop() 刪除值的方法(會改變原本的陣列內容)

移除陣列的最後一個元素。

let array = [0,1,2,3,4]
array.pop() //移除4
console.log(array) //[0,1,2,3]
  • 陣列開頭加入或刪除值
    • unshift() 加入值的方法(會改變原本的陣列內容)
      在陣列的開頭加入值,跟array[0] = 1不同,unshift()是加入一個以上的新值,並且將原本所有的值往後推,但array[0]= 1是將第一個值改為1,原本首位的值會消失。
let array = [0,1,2,3,4]
array.unshift(5) //在第一個位置加入5,原陣列值往後移動1個位置
console.log(array) //[5,0,1,2,3,4]
let array = [0,1,2,3,4]
array[0]= 5 //第一個位置的值變成5
console.log(array) //[5,1,2,3,4]
    • shift() 刪除值的方法(會改變原本的陣列內容)

移除陣列的第一個元素,可以宣告一個變數儲存移除的值。

let array = [0,1,2,3,4]
array.shift() //移除陣列的第一個元素,剩餘元素素往前移動
console.log(array) //[1,2,3,4]
let array = [0,1,2,3,4]
let first = array.shift() //利用變數first得到被移除的陣列的第一個元素
console.log(first) //0
console.log(array) //[1,2,3,4]
  • 合併或切割陣列
    • concat()合併陣列的方法(要創建新的陣列)
let a = [1,2,3,4]
let b = a.concat(['a','b','c','d'])
console.log(a) //[1,2,3,4]
console.log(b) //[1,2,3,4,'a','b','c','d']
    • splice()新增或切割陣列的方法(會改變原本的陣列內容)

加入或移除陣列的元素,在適當的位置修改。

寫法splice(index, count_to_remove, addelement1, addelement2, ...)index要開始修正的第一個索引值、count_to_remove要修正的的數量(含前面的索引值)、addelement1, addelement2要加入的陣列的元素。

//移除陣列中的值
let a = [1,2,3,4]
a.splice(1,2)
console.log(a) //[1,4]
//移除指定值後新增陣列的值
let b = ['a','b','c','d']
b.splice(1,2,'e','f')
console.log(b) // ['a','e','f','d']
    • slice()切割並返回陣列的片斷

寫法slice (begin_index[, end_index])返回陣列的片斷,該片段含begin_index,不含end_index,如果沒有指定end_index的話,就會從begin_index一直擷取到最後一個陣列值。

const arr = [0, 1, 2, 3, 4]
const newArr = arr.slice(1, 3)
console.log(newArr) //[1,2]
    • join()合併陣列變成字串

寫法arr.join([separator])[separator]沒有設定的話,預設值為,

const arr = [0, 1, 2, 3, 4]
const newArr = arr.join('-')
console.log(typeof newArr) //string
console.log(newArr) // '0-1-2-3-4'
  • 搜尋陣列索引值及排序
    • reverse()翻轉陣列
let array = [0,1,2,3,4]
array.reverse()
console.log(array) //[4,3,2,1,0]
    • indexOf()找到指定元素(第一個)在陣列中的索引值

寫法arr.indexOf(searchElement[, fromIndex])searchElement要找尋的值,fromIndex從第幾個索引值之後開始尋找,預設值為0;找不到該元素的話,索引值會是-1。

const arr = ['Mark', 'Paul', 'Mary', 'Michelle', 'Smith']
const arrindex = arr.indexOf('Mary')
console.log(arrindex) //2

const arrindex = arr.indexOf('Mary,3') //從索引值3開始尋找'Mary'
console.log(arrindex) //不存在於陣列中則回傳 -1
    • lastIndexOf()找到指定元素(最後一個)在陣列中的索引值

寫法跟上面的indexOf()很像,arr.lastIndexOf(searchElement[, fromIndex])searchElement要找尋的值,fromIndex從第幾個索引值往前開始尋找,預設值為0;找不到該元素的話,索引值會是-1。

const arr = ['Mark', 'Paul', 'Mary', 'Michelle', 'Smith']
const arrindex = arr.lastIndexOf('Mary')
console.log(arrindex) //2

const arrindex = arr.lastIndexOf('Mary',3) //從索引值3開始往前(3→2→1→0)尋找'Mary'
console.log(arrindex) //2
利用lengthpush()pop()unshift()shift()splice()reverse()是對原陣列中做新增或刪除值的動作,所以原陣列中的值是會變動的。

參考資料:

TechBridge 技術共筆部落格用-JavaScript 學習資料結構和演算法:陣列(Array)篇

@tooto1985 所整理的圖解 JavaScript 陣列操作方法

MDN-陣列的運用

OxxoStudio-JavaScript Array 陣列操作方法大全 ( 含 ES6 )

MDN-Array

留言
avatar-img
鍋灶的熱湯
1會員
13內容數
分享生活、旅行經驗,經驗是種解決問題的方式,方式不只一種歡迎大家一起分享經驗
鍋灶的熱湯的其他內容
2026/03/03
ECMAScript標準定義的七種資料型別 基本型別 (primitive type) String-字串”hello”。 Number-數字 (在 -(253 -1) and 253 -1 之間的數字), +Infinity、-Infinity、NaN也是數字型別。  Boolean-布林
2026/03/03
ECMAScript標準定義的七種資料型別 基本型別 (primitive type) String-字串”hello”。 Number-數字 (在 -(253 -1) and 253 -1 之間的數字), +Infinity、-Infinity、NaN也是數字型別。  Boolean-布林
2026/03/03
宣告變數、賦值 (assign) 變數的作用 為什麼要使用變數,原因其實很簡單,就是為了不要重複打同樣的一大串程式碼,更簡單的說就是懶,所以創造變數讓它去記得想讓它去記得的東西(同樣的一大串程式碼)。 變數的命名是有規則的 需要注意的事項 變數的名稱被稱為 identifiers 需要遵從
2026/03/03
宣告變數、賦值 (assign) 變數的作用 為什麼要使用變數,原因其實很簡單,就是為了不要重複打同樣的一大串程式碼,更簡單的說就是懶,所以創造變數讓它去記得想讓它去記得的東西(同樣的一大串程式碼)。 變數的命名是有規則的 需要注意的事項 變數的名稱被稱為 identifiers 需要遵從
2026/02/27
JavaScript跟前端的關係? MDN中的介紹: JavaScript是一種准許你在網頁上實現複雜事物的程式語言 — 每次網頁要做的不只是停在那裏,並顯示靜態信息給你— 及時顯示內容更新、交互式地圖、繪製2D/3D 動畫圖形以及滾動視訊點唱機等等。— 你會發現 JavaScript 幾乎無處
2026/02/27
JavaScript跟前端的關係? MDN中的介紹: JavaScript是一種准許你在網頁上實現複雜事物的程式語言 — 每次網頁要做的不只是停在那裏,並顯示靜態信息給你— 及時顯示內容更新、交互式地圖、繪製2D/3D 動畫圖形以及滾動視訊點唱機等等。— 你會發現 JavaScript 幾乎無處
看更多
你可能也想看
Thumbnail
JavaScript 中的 ESM(ES Modules)和 CJS(CommonJS)是用於模塊化開發的兩種不同的模組系統。 關於CJS CJS 是 CommonJS 的模塊系統,最初是為了在伺服器端使用的 Node.js 開發而設計的,但也被廣泛用於前端開發。CJS 使用 require 函數來
Thumbnail
JavaScript 中的 ESM(ES Modules)和 CJS(CommonJS)是用於模塊化開發的兩種不同的模組系統。 關於CJS CJS 是 CommonJS 的模塊系統,最初是為了在伺服器端使用的 Node.js 開發而設計的,但也被廣泛用於前端開發。CJS 使用 require 函數來
Thumbnail
自己在剛開始進入前端領域時,很剛好遇上需要使用 TypeScript 的案子,一開始都是跟著前輩怎麼寫就怎麼寫,不太有其他餘力來思考「為什麼」會需要寫這門程式語言,直到自己後來使用了 TypeScript 完整開發了電商的購物流程,才慢慢理解到使用 TypeScript 的好處與優勢。
Thumbnail
自己在剛開始進入前端領域時,很剛好遇上需要使用 TypeScript 的案子,一開始都是跟著前輩怎麼寫就怎麼寫,不太有其他餘力來思考「為什麼」會需要寫這門程式語言,直到自己後來使用了 TypeScript 完整開發了電商的購物流程,才慢慢理解到使用 TypeScript 的好處與優勢。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
如果你曾經撰寫過網頁,那你一定接觸過 JavaScript 無論是在 NodeJs 或是瀏覽器中運行。 但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢? 今天,讓我們一起深入了解其中的核心主角 ——Google 開發的開源 Java
Thumbnail
如果你曾經撰寫過網頁,那你一定接觸過 JavaScript 無論是在 NodeJs 或是瀏覽器中運行。 但你有沒有想過,我們寫下的 JS 程式碼,這些看似單純的英文和符號,是如何被轉化為機器能夠理解和執行的程式呢? 今天,讓我們一起深入了解其中的核心主角 ——Google 開發的開源 Java
Thumbnail
許多初學網頁開發的朋友們,一開始都不太理解HTML、CSS、 JavaScript之間的差異性,導致初期規劃學習計畫時毫無頭緒。 會有這樣的困擾,主要在於不了解HTML、CSS、 JavaScript之間的關係,以及這三者在網頁運作時所扮演什麼角色,導致越學越阿雜的狀況。
Thumbnail
許多初學網頁開發的朋友們,一開始都不太理解HTML、CSS、 JavaScript之間的差異性,導致初期規劃學習計畫時毫無頭緒。 會有這樣的困擾,主要在於不了解HTML、CSS、 JavaScript之間的關係,以及這三者在網頁運作時所扮演什麼角色,導致越學越阿雜的狀況。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
學習程式設計不再困難!本文提供一份循序漸進的 JavaScript 教學,每天只需 10 分鐘,就能從基礎語法到專案實作,逐步學習網頁開發,包含 HTML、CSS、JavaScript、DOM 操作、Canvas 等,並以 Road Map 呈現學習進度。即使零基礎也能輕鬆入門,開啟程式設計之路。
Thumbnail
學習程式設計不再困難!本文提供一份循序漸進的 JavaScript 教學,每天只需 10 分鐘,就能從基礎語法到專案實作,逐步學習網頁開發,包含 HTML、CSS、JavaScript、DOM 操作、Canvas 等,並以 Road Map 呈現學習進度。即使零基礎也能輕鬆入門,開啟程式設計之路。
Thumbnail
在初學程式的時候,我曾經看室友開發專案到一半時,突然坐在那發呆,於是我好奇一問,室友說:「我在等程式編譯完成啊。」 還記得當初還是程式小菜雞的我,懞懂無知的說:「編譯?哈哈哈,我們 JavaScript 都不需要編譯耶,可以直接跑在瀏覽器上。」 室友一臉莫名其妙地回我:「噢,是嗎⋯⋯」
Thumbnail
在初學程式的時候,我曾經看室友開發專案到一半時,突然坐在那發呆,於是我好奇一問,室友說:「我在等程式編譯完成啊。」 還記得當初還是程式小菜雞的我,懞懂無知的說:「編譯?哈哈哈,我們 JavaScript 都不需要編譯耶,可以直接跑在瀏覽器上。」 室友一臉莫名其妙地回我:「噢,是嗎⋯⋯」
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
在現代 Web 開發中,框架的規範性對於團隊合作至關重要。這不僅提高了程式碼的一致性,也降低了理解他人程式碼的時間成本。現在,我們將以 JavaScript 為例,展示如何使用關注點分離的原則來撰寫一個簡單的應用喔。
Thumbnail
在現代 Web 開發中,框架的規範性對於團隊合作至關重要。這不僅提高了程式碼的一致性,也降低了理解他人程式碼的時間成本。現在,我們將以 JavaScript 為例,展示如何使用關注點分離的原則來撰寫一個簡單的應用喔。
Thumbnail
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
Thumbnail
JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下: { "name": "Bob", "age": 40, "childs": [ { "name": "Justin", "
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News