亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

widuu / 2628人閱讀

摘要:方法就是的逆操作,作用是將一個(gè)鍵值對(duì)數(shù)組轉(zhuǎn)化為一個(gè)對(duì)象同樣的該方法也已經(jīng)成為中提案在介紹之前,回顧一下的用法。

Object.fromEntries 方法就是 entries 的逆操作,作用是將一個(gè)鍵值對(duì)數(shù)組轉(zhuǎn)化為一個(gè)對(duì)象

同樣的該方法也已經(jīng)成為 ES10 中 stage4 提案:

Object.entries

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

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

也可以通過(guò) new Map 構(gòu)造函數(shù)將對(duì)象轉(zhuǎn)為 Map:

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

Object.fromEntries

fromEntries 方法則剛好相反,將數(shù)組轉(zhuǎn)為對(duì)象:

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

當(dāng)然也可以傳入一個(gè) Map 將其轉(zhuǎn)為對(duì)象:

const map = new Map().set("a", 1).set("b", 2)

Object.fromEntries(map)

幾個(gè)注意事項(xiàng)

當(dāng)傳入的參數(shù)中有重復(fù)出現(xiàn)的 key:

傳入給 fromEntries 的參數(shù),如果有重復(fù)的 key 出現(xiàn),后面的會(huì)被采用:

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

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

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

上述代碼效果如下,entreis 接收的對(duì)象中如果有 symbol 作為 key 會(huì)直接被轉(zhuǎn)換為字符串:

key 為字符串或 symbol 之外的類型會(huì)被強(qiáng)制轉(zhuǎn)為字符串:

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

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

console.dir(Object.fromEntries(obj))

最后還有只支持創(chuàng)建對(duì)象可遍歷的屬性

應(yīng)用:過(guò)濾屬性

定義一個(gè)函數(shù),這個(gè)函數(shù)第一個(gè)參數(shù)為對(duì)象,另外接收其他幾個(gè)參數(shù)作為需要保留的屬性

function foo(obj, ...keys) {
    return Object.fromEntries(Object.entries(obj)
        .filter(([key]) => keys.includes(key))
    )
}

console.table(foo({ name: "oli", age: "12" }, "name"))

應(yīng)用:處理表單

假設(shè)我們有這樣一組數(shù)據(jù):

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

如果需要將其填充到 csv、sql 數(shù)據(jù)庫(kù)表中,那么只需要如下方法過(guò)濾數(shù)據(jù):

arr = [{
    name: "oli",
    age: 12
}, {
    name: "troy",
    age: 14
}]

obj = Object.fromEntries(
    arr.map(({name, age}) => [name, age])
)

console.table(obj)

數(shù)據(jù)過(guò)濾完畢后就可以很輕松的粘貼到 Excel 表格或方便的存儲(chǔ)到數(shù)據(jù)庫(kù)中

應(yīng)用:交換屬性和值
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" }))

還有其他通過(guò)使用數(shù)組方法來(lái)實(shí)現(xiàn)的各種功能,這里就不一一展示了
應(yīng)用:將 url 查詢字符串轉(zhuǎn)為對(duì)象
query = Object.fromEntries(new URLSearchParams("foo=bar&baz=qux"))
// {foo: "bar", baz: "qux"}

測(cè)試環(huán)境

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

參考:

https://www.chromestatus.com/...

https://github.com/tc39/propo...

http://2ality.com/2019/01/obj...

更多內(nèi)容關(guān)注:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/102360.html

相關(guān)文章

  • 目前可以使用ES105個(gè)新特性

    摘要:可選的語(yǔ)句中的有時(shí)候并沒(méi)有用,思考下面代碼使用瀏覽器可能尚未實(shí)現(xiàn)的功能這里回調(diào)函數(shù)中已經(jīng)幫我們處理好的錯(cuò)誤此代碼中的回調(diào)的信息并沒(méi)有用處。 為了保證可讀性,本文采用意譯而非直譯。 showImg(https://segmentfault.com/img/bVbucuJ?w=1024&h=682); ECMAScript 2015,也稱為ES6,是一個(gè)花了6年時(shí)間完成的主要版本。從那時(shí)起...

    canopus4u 評(píng)論0 收藏0
  • 精讀《What's new in javascript》

    摘要:舉例來(lái)說(shuō)即便某個(gè)失敗了,也不會(huì)導(dǎo)致的發(fā)生,這樣在不在乎是否有項(xiàng)目失敗,只要拿到都結(jié)束的信號(hào)的場(chǎng)景很有用。對(duì)于則稍有不同只要有子項(xiàng),就會(huì)完成,哪怕第一個(gè)了,而第二個(gè)了,也會(huì),而對(duì)于,這種場(chǎng)景會(huì)直接。 1. 引言 本周精讀的內(nèi)容是:Google I/O 19。 2019 年 Google I/O 介紹了一些激動(dòng)人心的 JS 新特性,這些特性有些已經(jīng)被主流瀏覽器實(shí)現(xiàn),并支持 polyfill...

    dabai 評(píng)論0 收藏0
  • ES6入門之對(duì)象新增方法

    showImg(https://user-gold-cdn.xitu.io/2019/5/22/16adcec448a45d82); 1. Object.is() 用來(lái)解決在ES5中 兩種相等運(yùn)算符的缺點(diǎn)。用來(lái)比較兩個(gè)值是否嚴(yán)格相等,行為和(===)基本一致。 在ES5中判斷兩個(gè)值是否相等,只能用(==)相等運(yùn)算符和(===)嚴(yán)格相等運(yùn)算符,但是這兩貨都有缺點(diǎn),前者 兩邊的值都會(huì)轉(zhuǎn)換數(shù)據(jù)類型,...

    zhou_you 評(píng)論0 收藏0
  • ES6入門之對(duì)象新增方法

    showImg(https://segmentfault.com/img/remote/1460000019258913?w=2933&h=1955); 1. Object.is() 用來(lái)解決在ES5中 兩種相等運(yùn)算符的缺點(diǎn)。用來(lái)比較兩個(gè)值是否嚴(yán)格相等,行為和(===)基本一致。 在ES5中判斷兩個(gè)值是否相等,只能用(==)相等運(yùn)算符和(===)嚴(yán)格相等運(yùn)算符,但是這兩貨都有缺點(diǎn),前者 兩邊的值都...

    Keven 評(píng)論0 收藏0
  • ES2019(ES10)

    摘要:一將語(yǔ)法擴(kuò)展為超集動(dòng)機(jī)聲稱是一個(gè)子集,但是因?yàn)橐呀?jīng)有詳細(xì)記錄這是不正確的,因?yàn)樽址梢园崔D(zhuǎn)義的和字符,而字符串則不能二對(duì)進(jìn)行了語(yǔ)法更改,允許中不寫捕獲動(dòng)機(jī)此提議引入的語(yǔ)法更改允許省略綁定其周圍的括號(hào)原寫法嘗試使用可能無(wú)法實(shí)現(xiàn)的功能支 showImg(https://segmentfault.com/img/bVbqWmL?w=1600&h=900); 一、JSON superse...

    shiina 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<