【解題筆記 - JS】陣列迭代 for...of 的 value 來源

更新 發佈閱讀 3 分鐘

今天想分享在網路上看到的陣列題目。

for...of 是一種陣列迭代的方法,通常 for...ofvalue 是陣列中的每個值,如果我們在迭代過程中對陣列操作會發生什麼事?

其實我一開始也答錯,看到解答才覺得「啊~其實原理很簡單,我怎麼忘了。」


題目:請問 console.log 的結果與原因?

來源:https://x.com/_jayphelps/status/1774640511158022335?s=20

const arr = [1, 2, 3];

for (const item of arr){
arr.shift()
console.log(item);
arr.push(item);
}

.

.

.

準備好了嗎?公布解答

.

.

.

結果分別是 1, 3, 3


我的解釋

  1. for...of 是一個陣列迭代器。
    我們先離開題目看,在沒有對來源陣列變更的狀態下,它是以下結果:
const arr = [1, 2, 3];

for (const item of arr){
console.log(item); // 1, 2, 3
}
  1. 其實 for...ofMDN)的 item 依賴的是一個看不見的參數 index,而 JavaScript 的 index 是從 0 起算。所以其實 itemarr[index]
const arr = [1, 2, 3];

for (const item of arr){
console.log(item);
// 第一次迭代,index 為 0,item 為 arr[0],也就是 1
// 第二次迭代,index 為 1,item 為 arr[1],也就是 2
// 第三次迭代,index 為 2,item 為 arr[2],也就是 3
}
  1. 回到題目,每次的迭代做了以下事項:
    arr.shift() → 刪除 arr 第一個值(不是指 index 1 喔!)
    arr.push(item)arr 最後面加入當下依賴 index 取得的 item
  2. 所以在每次迭代時,for (const item in arr) 中的 arr 都有變化,但產生 item 要依據的 index 依舊是 0、1、2.... 這樣增加。
    畫成圖更容易理解 for...of 中發生了什麼事情。
raw-image


出題者給的答案

解答:https://x.com/_jayphelps/status/1774642057014923608?s=20

出題者給的答案是用 for 迴圈解釋上方的 index 概念,也是一個點題卻也不破題的做法。或許出題者也需要點擊流量,就請點入上方連結觀看吧!


延伸閱讀

前陣子終於從六角的 Vue 直播班畢業了(求職中~)。

上面 index 的題目,讓我想到另一篇關於 Vuev-for 文章,v-for 是一個能將資料用列表方式渲染的手法,例如可以寫作以下方式,就可以依據 data 裡的資料數量產生相同數量的 <li>

<ul>
<li v-for="(item, idx) in data">{{ item }}</li>
// item 是 data 裡的每筆資料
// idx 是 data 中資料序列,比照陣列 index,也就是從 0、1、2...
</ul>

官方文件提到 v-for 需要搭配唯一值 key(也就是唯一的、不重複的、不變的值),否則可能出現錯誤。key 的來源可以是資料裡的唯一值,也可以是 idx,但這並不是推薦做法。因為如果我們對來源 data 內的資料做會影響順序的操作,就會產生像上面的 for...of 問題。詳細就請大家參考以下推薦文章連結了。

文章:v-for 可以使用 index 當作 key 嗎?

留言
avatar-img
Ann Chou的沙龍
19會員
32內容數
從藝術領域轉職到前端工程師,喜歡書寫學習歷程和技術文件,掌握經驗與隨時提取的感覺很好。
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
上禮拜三段考複習,出了線上習題讓學生在課堂練習,我也頭一次有時間能夠好好檢討這些額外習題。 其中有一題是出自100第一次基測(正巧就是我考的那一年),主要考圓周角與平行截角的概念。有學生在練習時有問我這題,我也給了許多提示與引導,讓他能順利完成。(如筆記中的法1)
Thumbnail
上禮拜三段考複習,出了線上習題讓學生在課堂練習,我也頭一次有時間能夠好好檢討這些額外習題。 其中有一題是出自100第一次基測(正巧就是我考的那一年),主要考圓周角與平行截角的概念。有學生在練習時有問我這題,我也給了許多提示與引導,讓他能順利完成。(如筆記中的法1)
Thumbnail
筆記型電腦是現代人工作、學習的好幫手,一旦出現問題,將嚴重影響生活與工作效率。本文將針對常見的筆記型電腦故障問題,如開機異常、電池故障、鍵盤損壞等,提供詳細的筆電維修資訊,並給予您專業的建議,幫助您快速解決問題,讓您的愛機重獲新生。
Thumbnail
筆記型電腦是現代人工作、學習的好幫手,一旦出現問題,將嚴重影響生活與工作效率。本文將針對常見的筆記型電腦故障問題,如開機異常、電池故障、鍵盤損壞等,提供詳細的筆電維修資訊,並給予您專業的建議,幫助您快速解決問題,讓您的愛機重獲新生。
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
這篇內容,將會講解什麼是陣列,以及與陣列相關的知識。包括陣列的簡介、陣列的資料限制、陣列的維度、一維陣列、二維陣列。
Thumbnail
這本「高效率人生管理筆記」,裡頭彙整了許多筆記方法、工具,就像在你面前出現一本本的武林秘笈. 這時,你應該做的,不是急著翻開這本書,或是開始針對書中內容做一張張精美圖卡或圖解筆記(我以前就是這樣,除非你今天的目的是販售這些知識產出,這又是另一回事了)
Thumbnail
這本「高效率人生管理筆記」,裡頭彙整了許多筆記方法、工具,就像在你面前出現一本本的武林秘笈. 這時,你應該做的,不是急著翻開這本書,或是開始針對書中內容做一張張精美圖卡或圖解筆記(我以前就是這樣,除非你今天的目的是販售這些知識產出,這又是另一回事了)
Thumbnail
書中介紹策略顧問的幾個核心思考脈絡與方法,透過書中所教的思考脈絡與問題解決三大支柱:批判思考、邏輯思考、假說思考,掌握問題20%的關鍵,一一拆解並解決至少80%的問題!
Thumbnail
書中介紹策略顧問的幾個核心思考脈絡與方法,透過書中所教的思考脈絡與問題解決三大支柱:批判思考、邏輯思考、假說思考,掌握問題20%的關鍵,一一拆解並解決至少80%的問題!
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
分享在網路上看到的陣列題目。通常 for...of 的 value 是陣列中的每個值,那如果我們在迭代中對陣列操作會發生什麼事? 題目來源:https://x.com/_jayphelps/status/1774640511158022335?s=20
Thumbnail
分享在網路上看到的陣列題目。通常 for...of 的 value 是陣列中的每個值,那如果我們在迭代中對陣列操作會發生什麼事? 題目來源:https://x.com/_jayphelps/status/1774640511158022335?s=20
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
Thumbnail
題目會給定一個陣列nums和一個目標值goal。計算子陣列總和=goal的數目有多少。演算法包含前綴和和字典的技巧,時間複雜度為O(n),空間複雜度為O(n)。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News