鍍金池/ 問答/HTML/ javascript中從一個(gè)對(duì)象取部分屬性給另一個(gè)對(duì)象

javascript中從一個(gè)對(duì)象取部分屬性給另一個(gè)對(duì)象

有一個(gè)很多屬性的對(duì)象,我想取出其中部分屬性給另一個(gè)對(duì)象,用了ES6的解構(gòu)和對(duì)象的簡(jiǎn)寫,發(fā)現(xiàn)還是有點(diǎn)蠢,需要的屬性還是需要寫兩遍,想問問有沒有更好的辦法?

var obj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5
}
var {a, d, e} = obj
var obj2 = {a, d, e}    
回答
編輯回答
挽歌

更好的 extend() 函數(shù)詳見 JavaScript權(quán)威指南-第6版

var obj = {
    a: 1,
    b: 2,
    c: 3,
    d: 4,
    e: 5
};

function extend(obj) {
    var o = {},
        attr = Array.prototype.slice.call(arguments).slice(1);

    attr.forEach(function(val, index) {
        if (val in obj) { o[val] = obj[val]; }
    });

    return o;

}

console.log(extend(obj, 'c', 'b')); //{ c: 3, b: 2 }
2017年10月18日 12:03
編輯回答
舊螢火

沒有什么更簡(jiǎn)單的辦法了。。。
自己封裝個(gè)方法吧。。

const pick = (obj, arr) =>
    arr.reduce((iter, val) => (val in obj && (iter[val] = obj[val]), iter), {});
    
let obj2 = pick(obj, ['a', 'd', 'e'])

lodash里有個(gè)類似的:_.pick方法

2018年1月2日 10:53