72

この例を考えてみましょう。ロダッシュを使っています

 'data': [
        {
            'category': {
                'uri': '/categories/0b092e7c-4d2c-4eba-8c4e-80937c9e483d',
                'parent': 'Food',
                'name': 'Costco'
            },
            'amount': '15.0',
            'debit': true
        },
        {
            'category': {
                'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
                'parent': 'Food',
                'name': 'India Bazaar'
            },
            'amount': '10.0',
            'debit': true
        },
        {
            'category': {
                'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
                'parent': 'Food',
                'name': 'Sprouts'
            },
            'amount': '11.1',
            'debit': true
        },

私がする時

_.filter(summary.data, {'debit': true})

私はすべてのオブジェクトを取り戻します。

私は何をしたいですか?

のすべてのオブジェクトが欲しいのですがcategory.parent == 'Food'、どうすればよいですか?

私は試した

_.filter(summary.data, {'category.parent': 'Food'})

そして得た

[]
4

5 に答える 5

162

lodash はネストされたオブジェクト定義を許可します:

_.filter(summary.data, {category: {parent: 'Food'}});

v3.7.0 の時点で、lodash では文字列でオブジェクト キーを指定することもできます。

_.filter(summary.data, ['category.parent', 'Food']);

JSFiddle のコード例: https://jsfiddle.net/6qLze9ub/

lodash は、配列のネストもサポートしています。配列項目の 1 つをフィ​​ルター処理する場合 (たとえば、カテゴリが配列の場合):

_.filter(summary.data, {category: [{parent: 'Food'}] }); 

カスタム比較が本当に必要な場合は、関数を渡すときです。

_.filter(summary.data, function(item) {
  return _.includes(otherArray, item.category.parent);
});
于 2014-04-25T18:30:49.917 に答える
3
_.where(summary.data, {category: {parent: 'Food'}});

あまりにもトリックを行う必要があります

于 2014-12-17T14:02:11.073 に答える