假设我有以下数组:
let path = ['foo','bar']
我有这个项目:
let item = {
faa: 'whatever',
foo: {
bar: 'hello there', //general kenobi
bor: 'nope'
}
}
我想使用类似如下的内容访问“ hello there”:
item[path] or item.path or item[path.join(".")]
您明白了,这可行吗?如果是,怎么办? (当然,此问题中的内容无效)
答案 0 :(得分:5)
你可以
let target = path.reduce((o, t)=> o ? o[t] : undefined, item)
这种单行代码旨在确保没有匹配项时不会出现任何错误:它只会返回undefined
。
演示:
let item = {
faa: 'whatever',
foo: {
bar: 'hello there', //general kenobi
bor: 'nope'
}
}
let path = ['foo','bar']
let target = path.reduce((o, t)=> o ? o[t] : undefined, item)
console.log(target)
答案 1 :(得分:0)
您还可以使用第三方库,例如Lodash。
然后您可以使用Lodash进行如下操作:
def residual_loss(): #<- this is just rought example, youre going to have to figure this out.
....
return loss
model.compile(adam, loss=residual_loss, metrics=[PSNR, "accuracy"])
关于它的好处是,如果该项目没有'foo',则不会出现错误。就像在对象上安全导航一样。