首页 > 解决方案 > 从参数开始删除对象的属性

问题描述

我想要一些建议来返回使用 lodash 删除其他对象的对象的属性。例子 :

deletePropsThatStarsWith({a:1, b:2, aa:3}, 'a') //ouputs {b:2}

到目前为止,这是可行的,但我不知道我需要去哪里。

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

function deletePropsThatStartsWith(object, prop) {
  return _.omit(object, prop)
}

console.log(deletePropsThatStartsWith(obj, 'a'))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

感谢您的帮助/建议。

标签: javascriptlodash

解决方案


您正在寻找 lodash_.omitBy方法。您可以为第二个参数传递一个回调,该参数决定要省略哪些属性。回调将使用两个参数调用,value并且key.

因此,对于您的示例,您只需要检查密钥,看看它是否以所需的字符串开头。该.startsWith方法将是一个不错的选择,或者如果您不能使用它,lodash 本身提供了一个_.startsWith方法。

例子:

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

function deletePropsThatStartsWith(object, prop) {
  return _.omitBy(object, (v, k) => k.startsWith(prop))
}

console.log(deletePropsThatStartsWith(obj, 'a'))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>


推荐阅读