使用Underscore省略键组

时间:2015-03-24 21:51:16

标签: javascript arrays underscore.js lodash

使用Underscore(技术上是Lodash)。有一个看起来如下的对象。

var myObj = {
    first: {name: 'John', occupation: 'Welder', age: 30},
    second: {name: 'Tim', occupation: 'A/C Repair', kids: true},
    third: {name: 'Dave', occupation: 'Electrician', age: 32},
    fourth: {name: 'Matt', occupation: 'Plumber', age: 41, kids: false}
};

我还有一个数组的哈希值,我希望"清理"每个对象:

var excludes = {
    first: ['name', 'age'],
    second: ['occupation'],
    fourth: ['kids]
};

这个想法是数组中的每个元素都将从具有匹配键的对象中删除。这意味着我的数据最终会像这样:

{
    first: {occupation: 'Welder'},
    second: {name: 'Tim', kids: true},
    third: {name: 'Dave', occupation: 'Electrician', age: 32},
    fourth: {name: 'Matt', occupation: 'Plumber', age: 41}
};

我原本在尝试:

_.map(myObj, function(obj, k) {
    if(_.has(excludes, k) {
        // not sure what here
    }
});

我在考虑在最里面使用省略,但我一次只能删除一个键,而不是键列表。

1 个答案:

答案 0 :(得分:5)

实际上,_.omit可以获取一系列密钥:

result = _.transform(myObj, function(result, val, key) {
    result[key] = _.omit(val, excludes[key]);
});