JS 筆記 | Object 操作篇

更新於 發佈於 閱讀時間約 6 分鐘

前一篇是關於 array 的基本操作,這篇來寫同樣重要的 object 操作。

同樣,先來建立一個物件:

let bookInfo = {
name: 'Hogwarts professors',
author: 'Jeremy',
category: 'Fanfiction',
date: '2023-10-08'
}



取 key

  1. Object.keys,取出物件的鍵。
const key = Object.keys(bookInfo)
console.log(key) // ['name', 'author', 'category', 'date']



取 value

  1. Object.values,取出物件的值
const value = Object.values(bookInfo)
console.log(value) //['Hogwarts professors', 'Jeremy', 'Fanfiction', '2023-10-08']



屬性刪除

  1. delete,刪除一條屬性。
delete bookInfo['date']
console.log(bookInfo) // {name: 'Hogwarts professors', author: 'Jeremy', category: 'Fanfiction'}



迭代

  1. for-in,可以視作物件的迴圈。現在來依序印出 bookInfo 的 key 吧!
for(let item in bookInfo){
console.log(item)
}
// name
// author
// category
// date​



複製

  1. ...,最常見的淺拷貝用法。(關於淺拷貝,要特別注意它對於深層的內容會有傳址的問題)
const copy = {...bookInfo}
  1. assign,也是淺層複製,也可以用在合併複數物件。
let obj2 = {
author2: 'Joanna',
job: 'designer'
}

bookInfo = Object.assign(bookInfo, obj2)

console.log(bookInfo)
// {​name: 'Hogwarts professors', author: 'Jeremy', category: 'Fanfiction', date: '2023-10-08',
// author2: 'Joanna', job: 'designer'}
  1. JSON.stringifyJSON.parse,這是深層複製的手法,透過先轉成字串讓傳址問題解決再轉回物件。
const deepCopyBook = JSON.parse(JSON.stringify(bookInfo))
deepCopyBook.author = 'Joanna'

console.log(deepCopyBook)
console.log(bookInfo)
  1. {...obj1, ...obj2},這是合併物件的一個方法,我們利用assign例子中建立的第二個物件來合併看看。
const newObj = {...bookInfo, ...obj2}
console.log(newObj)
// {​name: 'Hogwarts professors', author: 'Jeremy', category: 'Fanfiction', date: '2023-10-08',
// author2: 'Joanna', job: 'designer'}



查詢

  1. property in Obj,這是用來查詢某個屬性是否存在於物件中。比如我想知道 author 這個屬性是否存在:
console.log('author' in bookInfo) // true
  1. hasOwnProperty,同樣也適用在查詢某個屬性是否存在於物件中。
console.log(bookInfo.hasOwnProperty('author')) // true
  1. 可選串聯,新語法,對於深層不存在的屬性會回傳 undefined 而不會中斷程式碼運作。
console.log(bookInfo?.author?.name) // undefined



Object to Array

  1. Object.entries,這是把物件轉成陣列的方法。如果要把陣列轉成物件可以用Object.fromEntries
    現在讓我們把 bookInfo 轉過去再轉回來。
const arrBookInfo = Object.entries(bookInfo)
console.log(arrBookInfo)
// [[ 'name', 'Hogwarts professors' ], [ 'author', 'Jeremy' ], [ 'category', 'Fanfiction' ],
// [ 'date', '2023-10-08' ]]

const objBookInfo = Object.fromEntries(arrBookInfo)
console.log(objBookInfo)
// {name: 'Hogwarts professors', author: 'Jeremy', category: 'Fanfiction', date: '2023-10-08'}



參考資料

  1. JavaScript 大全 (第七版) / David Flanagan / 歐萊禮出版
  2. 帶你無痛提升 JavaScript 面試力 / 卡斯伯 / 博碩出版
  3. JS - Object 物件基本操作


留言
avatar-img
留言分享你的想法!
avatar-img
Jeremy Ho的沙龍
19會員
37內容數
這個專題用來存放我在學習網頁開發時的心得及知識。
Jeremy Ho的沙龍的其他內容
2023/11/17
2023/11/17
2023/11/16
TypeScript 基礎語法
Thumbnail
2023/11/16
TypeScript 基礎語法
Thumbnail
2023/11/13
JavaScript callback, promise, async-await
Thumbnail
2023/11/13
JavaScript callback, promise, async-await
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
解析成List List items=json.decode(jsonStr); print(items[0]["your_key"]); 解析成Map Map<String, dynamic> user = json.decode(json); print('${user['your_k
Thumbnail
解析成List List items=json.decode(jsonStr); print(items[0]["your_key"]); 解析成Map Map<String, dynamic> user = json.decode(json); print('${user['your_k
Thumbnail
JavaScript Object 基礎操作筆記
Thumbnail
JavaScript Object 基礎操作筆記
Thumbnail
在第十六課中,我們將繼續深入探討物件導向程式設計 (OOP) 的進階主題,尤其是 Python 中的特殊方法、屬性和繼承的進階概念。 請新建一個檔案 oop_advanced.py。
Thumbnail
在第十六課中,我們將繼續深入探討物件導向程式設計 (OOP) 的進階主題,尤其是 Python 中的特殊方法、屬性和繼承的進階概念。 請新建一個檔案 oop_advanced.py。
Thumbnail
在第十五課中,我們將探索 Python 的基礎物件導向程式設計 (OOP) 概念。 物件導向程式設計是一種設計和組織程式碼的方法,它強調使用物件來表示資料和功能。
Thumbnail
在第十五課中,我們將探索 Python 的基礎物件導向程式設計 (OOP) 概念。 物件導向程式設計是一種設計和組織程式碼的方法,它強調使用物件來表示資料和功能。
Thumbnail
Hi, 大家好,我是茶桁。 上一节课中,我们讲解了面向对象中的一些高阶应用,给大家介绍了一些魔术方法。并在最后,我们预告这节课内容会讲解描述符和设计模式。 好了,让我们开始吧。 描述符 这个玩意,怎么讲合适呢?这么说吧,当某一个类中,包含了三个魔术方法(__get__, __set__, _
Thumbnail
Hi, 大家好,我是茶桁。 上一节课中,我们讲解了面向对象中的一些高阶应用,给大家介绍了一些魔术方法。并在最后,我们预告这节课内容会讲解描述符和设计模式。 好了,让我们开始吧。 描述符 这个玩意,怎么讲合适呢?这么说吧,当某一个类中,包含了三个魔术方法(__get__, __set__, _
Thumbnail
解構賦值 (Destructuring assignment) 語法是一種 JavaScript 運算式,可以把陣列或物件中的資料解開擷取成為獨立變數。
Thumbnail
解構賦值 (Destructuring assignment) 語法是一種 JavaScript 運算式,可以把陣列或物件中的資料解開擷取成為獨立變數。
Thumbnail
想像自己的文本若變成一本電子書,出版社會怎樣刁(雕琢)你的內容⋯⋯。
Thumbnail
想像自己的文本若變成一本電子書,出版社會怎樣刁(雕琢)你的內容⋯⋯。
Thumbnail
不知不覺寫到第七篇了!QUERY 真的有好多好多東西可以說 (ノ>ω<)ノ QUERY 其實還能處理有日期、時間的資料,而且語法也相當容易,和我們之前就看過的聚集函式很像。你如果會了之前的聚集函式,相信這次處理日期和時間也會對你來說很簡單!
Thumbnail
不知不覺寫到第七篇了!QUERY 真的有好多好多東西可以說 (ノ>ω<)ノ QUERY 其實還能處理有日期、時間的資料,而且語法也相當容易,和我們之前就看過的聚集函式很像。你如果會了之前的聚集函式,相信這次處理日期和時間也會對你來說很簡單!
Thumbnail
到目前為止,我們所學習的都是程序性的程式設計(procedural programming),也就是程式碼是透過一連串的指令組成的程序或函數,由上而下依序執行不同的程序或是呼叫函數來完成程式的功能。 Python其實是一種物件導向的程式(object oriented programming, 簡稱
Thumbnail
到目前為止,我們所學習的都是程序性的程式設計(procedural programming),也就是程式碼是透過一連串的指令組成的程序或函數,由上而下依序執行不同的程序或是呼叫函數來完成程式的功能。 Python其實是一種物件導向的程式(object oriented programming, 簡稱
Thumbnail
2021.09.05 書名:定義集 頁數:p102 為了瞭解自己,捨棄與保留同樣重要,有時候其重要性甚至超乎想像。 p 284 紙本書的重要性不可言喻。我決定從一年之始重新閱讀它。 共鳴: 疫情期間上了很多講座的課,也狂作筆記,變成我最愛的方式,結果沒想到,要閱讀時,居然會睡著,以前很愛閱讀的自己
Thumbnail
2021.09.05 書名:定義集 頁數:p102 為了瞭解自己,捨棄與保留同樣重要,有時候其重要性甚至超乎想像。 p 284 紙本書的重要性不可言喻。我決定從一年之始重新閱讀它。 共鳴: 疫情期間上了很多講座的課,也狂作筆記,變成我最愛的方式,結果沒想到,要閱讀時,居然會睡著,以前很愛閱讀的自己
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News