Lodash。如何过滤对象的对象?

时间:2017-11-05 14:14:50

标签: javascript 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过滤我的对象?

2 个答案:

答案 0 :(得分:1)

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

Try it

答案 1 :(得分:1)

Jonas提出的类似解决方案,但是使用简单的ES5,Lodash和没有突变:

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