通过Vue Computed通过其他对象过滤对象

时间:2019-03-01 10:27:01

标签: object vue.js

我正在尝试构建一个由复选框过滤的表。我有3个对象:

  • 已选中:当前选中了哪些复选框
  • 站点:填充复选框的内容。对象结构:sites: [{ siteid, name } ...]
  • 项:所有表项。对象结构:items: [{siteid, gradeid, cpl} ..]

垃圾箱:https://pastebin.com/J2kBr2Xy CodePen:https://codepen.io/tomdickson/pen/OqXpay

希望这可以提供足够的信息

1 个答案:

答案 0 :(得分:1)

尝试此代码。我认为这会起作用。

computed: {
    filteredPositions () {
      return this.items.filter(item => this.selected.includes(item.siteid));
    }
  }

提琴-https://jsfiddle.net/8x3yer54/1/

只需替换为此计算,它就可以正常工作。

computed: {
        filteredSite() {
            if (!this.selected.length || this.selected.includes(true)) 
                return this.items

             return this.items.filter(item => this.selected.find((item2) => item2.site==item.site))
        }
    }