国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

迅速了解一下ES10中Object.fromEntries的用法使用

2019-11-19 12:02:26
字體:
來源:轉載
供稿:網友

Object.fromEntries 方法就是 entries 的逆操作,作用是將一個鍵值對數組轉化為一個對象

同樣的該方法也已經成為 ES10 中 stage4 提案:

Object.entries

在介紹 fromEntries 之前,回顧一下 entries 的用法。這個方法返回的是對象自身的、可枚舉的屬性組成的數組:

const obj = { a: '1', b: 2 }Object.entries(obj)

也可以通過 new Map 構造函數將對象轉為 Map:

new Map(Object.entries(obj))// Map(2) {"a" => "1", "b" => 2}

Object.fromEntries

fromEntries 方法則剛好相反,將數組轉為對象:

Object.fromEntries([['a', '1'], ['b', 2]])

當然也可以傳入一個 Map 將其轉為對象:

const map = new Map().set('a', 1).set('b', 2)Object.fromEntries(map)

幾個注意事項

當傳入的參數中有重復出現的 key:

傳入給 fromEntries 的參數,如果有重復的 key 出現,后面的會被采用:

Object.fromEntries([['a', '1'], ['a', '2']])

雖然 entries 不支持 symbol 作為 key,但 fromEntries 卻可以:

Object.fromEntries([[s, 1]])Object.entries({ s: 1 })

上述代碼效果如下,entreis 接收的對象中如果有 symbol 作為 key 會直接被轉換為字符串:

key 為字符串或 symbol 之外的類型會被強制轉為字符串:

他可以接收任何類數組,如 Map 等,甚至是有自定義迭代器的對象:

obj = {}obj[Symbol.iterator] = function* () {  yield [1, 11]  yield [2, 22]  yield [3, 33]}console.dir(Object.fromEntries(obj))

最后還有只支持創建對象可遍歷的屬性

應用:過濾屬性

定義一個函數,這個函數第一個參數為對象,另外接收其他幾個參數作為需要保留的屬性

function foo(obj, ...keys) {  return Object.fromEntries(Object.entries(obj)    .filter(([key]) => keys.includes(key))  )}console.table(foo({ name: 'oli', age: '12' }, 'name'))

應用:處理表單

假設我們有這樣一組數據:

[{  name: 'oli',  age: 12}, {  name: 'troy',  age: 14}]

如果需要將其填充到 csv、sql 數據庫表中,那么只需要如下方法過濾數據:

arr = [{  name: 'oli',  age: 12}, {  name: 'troy',  age: 14}]obj = Object.fromEntries(  arr.map(({name, age}) => [name, age]))console.table(obj)

數據過濾完畢后就可以很輕松的粘貼到 Excel 表格或方便的存儲到數據庫中

應用:交換屬性和值

function foo(obj) {  return Object.fromEntries(Object.entries(obj)    .map(([key, value]) => [value, key])  )}console.table({ name: 'oli', age: '12' })console.table(foo({ name: 'oli', age: '12' }))

還有其他通過使用數組方法來實現的各種功能,這里就不一一展示了

應用:將 url 查詢字符串轉為對象

query = Object.fromEntries(new URLSearchParams('foo=bar&baz=qux'))// {foo: "bar", baz: "qux"}

測試環境

想要嘗試的童鞋,需要下載 chrome 測試版,保證 chrome 瀏覽器版本要大于 73:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐边县| 白水县| 利津县| 敖汉旗| 阳泉市| 游戏| 东台市| 灌阳县| 天水市| 鹿邑县| 凤翔县| 垫江县| 上蔡县| 望奎县| 抚远县| 赫章县| 瑞昌市| 闸北区| 城固县| 达拉特旗| 隆子县| 长丰县| 岑溪市| 潜江市| 文山县| 青海省| 山东省| 江永县| 静安区| 仪征市| 平谷区| 吉隆县| 胶州市| 甘泉县| 新昌县| 郸城县| 华安县| 商都县| 土默特右旗| 晋中市| 云霄县|