【发布时间】:2020-07-08 17:47:59
【问题描述】:
我有以下代码来获取给定对象的密钥。所以对于对象{"hello": {"data": {"a": "world", "b": "random"}}},如果传入的键是hello.data.a,那么输出就是world。
(object, key) => {
const keyParts = key.split(".");
let returnValue = object;
keyParts.forEach((part) => {
if (returnValue) {
returnValue = returnValue[part];
}
});
return returnValue;
}
我试图弄清楚如何以相同的方式动态删除属性。因此,例如对于相同的对象和键,它会将对象更改为 {"hello": {"data": {"b": "random"}}}。
基本上我希望与delete object.hello.data.a 具有相同 的行为。但问题是hello.data.a 部分是传入的动态字符串。当然,delete object[key] 之类的东西不起作用,因为键具有嵌套级别。如果它只有 1 级深,它会起作用,但不适用于嵌套项。
另一个重要的注意事项是,在这种情况下,性能非常重要。因此,尽管创建一个新对象并复制除我要删除的那个之外的所有属性可能 工作,但我非常担心它与 delete 关键字的性能影响。 p>
由于其他外部因素,我也不想将属性值设置为null 或undefined。我希望真正从对象中删除密钥。
我怎样才能做到这一点?
【问题讨论】:
标签: javascript