You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Lodash删除对象中以指定前缀开头的属性?

解决用Lodash删除对象中指定前缀属性的问题

嘿,我来帮你搞定这个问题!你当前的代码用_.omit(object, prop)只能删除精确匹配属性名的单个属性,所以没法处理前缀匹配的场景。要实现删除所有以指定字符串开头的属性,我们可以利用Lodash的特性做两种改进:

方法一:直接用_.omit的函数判断逻辑

_.omit的第二个参数支持传入一个函数,这个函数会遍历对象的每个属性,返回true就会把对应属性从结果中剔除。我们可以在函数里检查属性名是否以目标前缀开头:

var obj = { a: 1, b: 2, aa: 3 };

function deletePropsThatStartsWith(object, prefix) {
  // 用原生startsWith判断属性名前缀,返回true的属性会被剔除
  return _.omit(object, (_, key) => key.startsWith(prefix));
}

console.log(deletePropsThatStartsWith(obj, 'a')); // 输出 { b: 2 }

如果需要兼容不支持String.prototype.startsWith的旧浏览器,换成Lodash自带的_.startsWith更稳妥:

function deletePropsThatStartsWith(object, prefix) {
  return _.omit(object, (_, key) => _.startsWith(key, prefix));
}

方法二:先筛选出要删除的属性名数组

先通过Object.keys拿到对象所有属性名,筛选出符合前缀条件的属性,再把这个数组传给_.omit:

var obj = { a: 1, b: 2, aa: 3 };

function deletePropsThatStartsWith(object, prefix) {
  // 筛选出所有以prefix开头的属性名
  const propsToRemove = Object.keys(object).filter(key => key.startsWith(prefix));
  // 批量删除这些属性
  return _.omit(object, propsToRemove);
}

console.log(deletePropsThatStartsWith(obj, 'a')); // 输出 { b: 2 }

这两种方法都能完美实现你要的效果,选哪种都可以——第一种更简洁,第二种逻辑更直观,适合需要对要删除的属性做额外处理的场景。

内容的提问来源于stack exchange,提问作者maxd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:51:26