首页 > 解决方案 > 如何在 vue 计算属性中映射结果

问题描述

我们的应用程序有多个位置,每个位置的 accessGroup 为 a、b、c 或 d。我们的用户有一组 accessGroups ['a', 'c'] 等。

在我们的位置页面上,myLocations 应该返回 location.accessGroup 包含在其 accessGroup 数组中的位置。

computed: {
  ...mapState(['currentUser', 'locations', 'userProfile']),
}
myLocations: function() {
    return this.locations.filter((location) => {
      return location.accessGroup === this.userProfile.accessGroup
    })
  },

标签: vue.jscomputed-properties

解决方案


看起来您正在将字符串与数组进行比较。尝试这个:

// assuming userProfile.accessGroup is an array of strings like ['a', 'c'] etc
// and location.accessGroup is a string: 'a', 'b', 'c', or 'd'
myLocations () {
  return this.locations.filter((location) => {
    return this.userProfile.accessGroup.indexOf(location.accessGroup) >= 0
  })
}

推荐阅读