【发布时间】:2018-08-21 18:45:04
【问题描述】:
我试图通过将键传递给方法来从对象中删除项目。例如,我想删除a1,为此我将a.a1 传递给该方法。然后它应该从对象中删除a1,只留下对象的其余部分。
这是对象的结构:
this.record = {
id: '',
expiration: 0,
data: {
a: {
a1: 'Cat'
}
}
}
然后我调用这个方法:
delete(key) {
let path = key.split('.')
let data = path.reduce((obj, key) => typeof obj == 'object' ? obj[key] : null, this.record.data)
if(data) delete data
}
像这样:
let inst = new MyClass()
inst.delete('a.a1')
然而,这给了我以下错误:
delete data; ^^^^SyntaxError: 在严格模式下删除不合格的标识符。
我认为data 在这一点上仍然是一个引用,或者不是?
也许reduce 不是在这里使用的正确方法。如何从对象中删除项目?
【问题讨论】:
-
这可能不是一个有效的答案,但您可以展平对象,删除键,然后将其展平。有几个图书馆可以为您完成繁重的工作。这是一个:github.com/hughsk/flat
标签: javascript