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
    }
}