2017-11-05 9 views
0

アイテムのあるカートのオブジェクトです。Lodash。どのようにオブジェクトのオブジェクトをフィルタリングするのですか?

carts: { 
       0: { 
        id:1, 
        items:{ 
         0:{id:100}, 
         1:{id:101}, 
         2:{id:10} 
        } 
       }, 
       1: { 
        id:2, 
        items:{ 
         0:{id:34}, 
         1:{id:15}, 
         2:{id:46} 
        } 
       }, 
      } 

はまた、私は最初の配列から削除するアイテムID [101、46]との単純な配列を有しています。

私のオブジェクトをlodashでフィルタリングするにはどうすればよいですか?ジョナスが提案されているものにはなく、プレーンES5、Lodashとし、変異のない

+2

それは、オブジェクトのオブジェクトの配列ではありません –

+0

はい、配列ではありません。どのように正確にフィルタリングしたいですか?結果の「配列」も表示します。 – Pratheep

+0

固定質問です。 –

答えて

1

同様のソリューション:

var carts = { 
    // ... 
}; 

function getFilteredCarts(carts, idsToRemove) { 
    return _.mapValues(carts, function (value) { 
     return _.omitBy(value.items, function (item) { 
      return _.includes(idsToRemove, item.id); 
     }); 
    }); 
} 

getFilteredCarts(carts, [101, 46]); 

Try it

1
Object.values(carts).forEach(({items}) => { 
    for(var i in items) 
    if(ids.includes(items[i].id)) delete items[i]; 
}); 

Try it

+0

ありがとう!それは仕事です! –

+0

しかし、それは項目を未定義にします。どのようにオブジェクトからアイテムを完全に削除しますか? –

+0

@ilyaそれらを削除します。 * undefined *は、削除されたことを示すjavascriptsの方法です。 –

関連する問題