如何使用lodash更优实现查找对象并删除其内部数组的指定值
方案1:原地修改原数组(最简写法)
直接用_.find定位目标对象,搭配_.pull直接移除指定值,一行即可完成操作:
_.pull(_.find(subs, { slug: "just" }).subscriber, "1107405573");
说明:_.find直接匹配slug为just的对象,不需要手动查找索引再访问属性;_.pull会原地移除数组内所有和指定值相等的元素,省去手动filter再赋值的步骤。
方案2:不可变更新(不修改原数组,返回新数组)
如果业务场景要求不改动原数据,可以用_.map搭配_.without实现:
const newSubs = _.map(subs, item => item.slug === "just" ? { ...item, subscriber: _.without(item.subscriber, "1107405573") } : item );
说明:_.without会返回过滤掉指定值的新数组,不会改动原subscriber数组,遍历过程中未匹配的对象直接返回,保证原数组完全不受影响。
内容的提问来源于stack exchange,提问作者mukhlis
相关产品推荐
相关产品推荐

