如何解决Vue方法中如何使用短路评估?
我正在使用vue-cli和vuex,并且正在尝试实现以下目标:
methods: {
filtered() {
let vol = this.$store.state.data[1].data.filter(i => i.type === 'vol')[0].measure || 0;
let weight = this.$store.state.data[1].data.filter(i => i.type === 'weight')[0].measure || 0;
}
}
我当前的数据包含卷type
但不包含权重,所以我希望将let weight
转换为= 0
但是我收到一个错误Cannot read property 'measure' of undefined
。
任何想法都很棒,非常感谢!
解决方法
使用filter()
代替find()
,并将其存储在变量中。然后检查变量是否包含任何内容。
methods: {
filtered() {
let volobj = this.$store.state.data[1].data.find(i => i.type === 'vol')
let vol = volobj ? volobj.measure : 0;
let weightobj = this.$store.state.data[1].data.find(i => i.type === 'weight')
let weight = weightobj ? weightobj.measure : 0;
}
}
,
答案:
-
filter()
数组助手返回Array
,其中find()
返回结果的第一个元素。 - 在此处设置您的默认值:
{ measure: 0 }
,如果找不到任何内容,则将其用作后备
methods: {
filtered() {
let vol = (this.$store.state.data[1].data.find(i => i.type === 'vol') || { measure: 0 }).measure
let weight = (this.$store.state.data[1].data.find(i => i.type === 'weight') || { measure: 0 }).measure
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。