web-dev-qa-db-ja.com

アンダースコア:オブジェクトの配列からすべてのキー/値ペアを削除します

オブジェクトの配列からすべてのキー/値ペアを削除する「スマートな」アンダースコア方法はありますか?

例えば私は次の配列を持っています:

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 },
    ];

そして、私は次のものを取得したい:

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

私はこれを以下のJSで動作させることができますが、私のソリューションにはあまり満足していません:

for (var i = 0; i < arr.length; i++) {
    delete arr[i].c;
};

提案は大歓迎です。

31
Iladarsda

mapomit を組み合わせて使用​​すると、次のように特定のプロパティを除外できます。

var newArr = _.map(arr, function(o) { return _.omit(o, 'c'); });

または map および pick は、次のような特定のプロパティのみを含めるようにします。

var newArr = _.map(arr, function(o) { return _.pick(o, 'q'); });
51
p.s.w.g

省略用

_.map(arr, _.partial(_.omit, _, 'c'));

ピック用

_.map(arr, _.partial(_.pick, _, 'q'));
0
Sam