第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從es 6中的對象獲取一些屬性的一行程序。

從es 6中的對象獲取一些屬性的一行程序。

從es 6中的對象獲取一些屬性的一行程序。如何編寫函數(shù),在ES6中以最緊湊的方式只使用很少的屬性?我已經(jīng)想出了使用析構(gòu)+簡化對象文字的解決方案,但是我不喜歡在代碼中重復(fù)這個字段列表。有沒有更苗條的解決方案?(v) => {     let { id, title } = v;     return { id, title };}
查看完整描述

4 回答

?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗 獲得超6個贊

這里有一些更輕巧的東西,盡管它不能避免重復(fù)字段列表。它使用“參數(shù)析構(gòu)”來避免對v參數(shù)。

({id, title}) => ({id, title})

@Ethan Brown的解決方案更為普遍。下面是一個更地道的版本,它使用Object.assign,以及計算的屬性([p](第一部分)

function pick(o, ...props) {
    return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));}

如果我們希望保留屬性的屬性,如configurable和getter和setter,同時也省略不可枚舉的屬性,然后:

function pick(o, ...props) {
    var has = p => o.propertyIsEnumerable(p),
        get = p => Object.getOwnPropertyDescriptor(o, p);

    return Object.defineProperties({},
        Object.assign({}, ...props            .filter(prop => has(prop))
            .map(prop => ({prop: get(props)})))
    );}


查看完整回答
反對 回復(fù) 2019-05-30
?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗 獲得超8個贊

我不認(rèn)為有什么辦法比你的答案(或者托拉茲布的答案)更簡潔,但實際上你想要做的是模仿下劃線pick操作。在ES6中重新實現(xiàn)這一點是非常容易的:

function pick(o, ...fields) {
    return fields.reduce((a, x) => {
        if(o.hasOwnProperty(x)) a[x] = o[x];
        return a;
    }, {});}

那么您就有了一個方便的可重用函數(shù):

var stuff = { name: 'Thing', color: 'blue', age: 17 };var picked = pick(stuff, 'name', 'age');


查看完整回答
反對 回復(fù) 2019-05-30
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗 獲得超2個贊

解決這一問題的訣竅是翻轉(zhuǎn)所采取的方法:而不是從原始對象開始。orig,你可以從他們想要提取的鑰匙開始。

使用Array#reduce然后,可以將每個所需的密鑰存儲在空對象上,該對象作為initialValue為了上述功能。

就像這樣:

const orig = {

  id: 123456789,

  name: 'test',

  description: '…',

  url: 'https://…',

};


const filtered = ['id', 'name'].reduce((result, key) => { result[key] = orig[key]; return result; }, {});


console.log(filtered); // Object {id: 123456789, name: "test"}


查看完整回答
反對 回復(fù) 2019-05-30
?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊

使用逗號運算符的更短一點的解決方案:

const pick = (O, ...K) => K.reduce((o, k) => (o[k]=O[k], o), {})


查看完整回答
反對 回復(fù) 2019-05-30
  • 4 回答
  • 0 關(guān)注
  • 1287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號