vue方法中如何使用短路求值?
How to use short-circuit evaluation in vue method?
我正在使用 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()
数组助手 returns Array
其中作为 find()
returns 结果的第一个元素。
- 在此处设置您的默认值:
{ 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
}
}
我正在使用 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()
数组助手 returnsArray
其中作为find()
returns 结果的第一个元素。- 在此处设置您的默认值:
{ 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
}
}