下划线:从对象数组中删除所有键/值对

Ila*_*sda 31 javascript arrays underscore.js

是否存在从对象数组中删除所有键/值对的"智能"下划线方式?

例如,我有以下数组:

var arr = [
        { q: "Lorem ipsum dolor sit.", c: false },
        { q: "Provident perferendis veniam similique!", c: false },
        { q: "Assumenda, commodi blanditiis deserunt?", c: true },
        { q: "Iusto, dolores ea iste.", c: false },
    ];
Run Code Online (Sandbox Code Playgroud)

我希望得到以下内容:

var newArr = [
        { q: "Lorem ipsum dolor sit." },
        { q: "Provident perferendis veniam similique!" },
        { q: "Assumenda, commodi blanditiis deserunt?" },
        { q: "Iusto, dolores ea iste." },
    ];
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的JS工作,但对我的解决方案并不满意:

for (var i = 0; i < arr.length; i++) {
    delete arr[i].c;
};
Run Code Online (Sandbox Code Playgroud)

任何建议非常感谢.

p.s*_*w.g 51

您可以使用mapomit结合使用来排除特定属性,如下所示:

var newArr = _.map(arr, function(o) { return _.omit(o, 'c'); });
Run Code Online (Sandbox Code Playgroud)

或者mappick只包含特定属性,就像这样:

var newArr = _.map(arr, function(o) { return _.pick(o, 'q'); });
Run Code Online (Sandbox Code Playgroud)

  • @ User789,另外,如果你只是想要一个数组,你也可以使用pluck方法:`var newArr = _.pluck(arr,'q');` (3认同)