物件(Object)資料處理
用 Object.keys()、Object.values() 兩個方法來處理物件內的資料。
Object.keys()
Object.keys() 取得物件的鍵值(key),組成陣列後回傳。
例如:
Code
1 | let array = ['a','b','c']; |
而在 ES5 中,如果這個方法的參數不是一個標準物件(例如原始型別),將會產生 TypeError 錯誤。而在 ES6,非物件的參數會強制轉換成物件。
Object.values()
Object.values() 取得物件的 value,組成陣列。
Code
1 | let obj = {name: "hotdog",num:5}; |
如果 Object.values 的參數是字串,將會回傳字串各個字組成的陣列。
Code
1 | Object.values('good'); |
如果參數是布林值或者數字,則會回傳空陣列
Code
1 | Object.values(true) // [] |
如果要對物件中有物件和陣列中有物件的情況。做進一步的處理,可以加上 Array.map() 來做。
Array.map(): 迭代陣列,並將 callback 中的執行結果組成新陣列後回傳。
物件中有物件
例如:
Code
1 | const list = { |
取 key 值
Code
1 | Object.keys(list) // ["1234567890", "2345678901", "3456789012"] |
取特定 value 值
Code
1 | Object.values(list).map(item => item.name) // ["john", "kitty", "david"] |
陣列中有物件
Code
1 | const list = [ |
取 id
Code
1 | list.map(item => Object.values(item)[0]); // 0 表示第一個屬性值 |
取 name
Code
1 | list.map(item => Object.values(item)[1]); // 1 表示第二個屬性值 |
另一種陣列中有物件形式
Code
1 | [ |
取 key
使用 Object.keys 取得每個物件的鍵值,由於 Object.keys 會幫每個物件在取鍵值時建立一個陣列,因此要用 [0] 再取得內容。
Code
1 | list.map(item => Object.keys(item)[0]) |
取 value
使用 Object.values 取得每個物件的 value,再用 [0] 取得內容。
Code
1 | list.map(item => Object.values(item)[0]) |
參考:
https://cythilya.github.io/2018/06/17/array-and-object-handling/