在vuejs中使用有条件的filter()内部?

时间:2019-11-28 15:11:33

标签: javascript vue.js

我想在vuejs的filter()函数中使用条件运算符,但是在|| if之后出现错误

这是我的代码:

return this.produits.filter((item) => {
  return (
    item.codeproduct == this.codebar ||
    if (item.produitbrand) {
      for (let i = 0; i < item.produitbrand.length; i++) {
        if (item.produitbrand[i].brandsubproduit) {
          for (let e = 0; e < item.produitbrand[i].brandsubproduit[e].length; e++) {
            item.produitbrand[i].brandsubproduit[e].codeproduct == this.codebar
          }
        }
      }
    });
})

任何方向?谢谢。

更新:这是我的错误: Error message

1 个答案:

答案 0 :(得分:2)

表达式内不允许

iffor语句。

return (开始一个表达式。

如果我正确理解了您要做什么,这就是您应该编写的方式:

return this.produits.filter((item) => {
  if (item.codeproduct == this.codebar) {
    return true;
  } 
  if (item.produitbrand) {
    for (let i = 0; i < item.produitbrand.length; i++) {         
      if (item.produitbrand[i].brandsubproduit) {
        for (let e = 0; e < item.produitbrand[i].brandsubproduit.length; e++) {         
          if (item.produitbrand[i].brandsubproduit[e].codeproduct == this.codebar) {
            return true;
          }
        }
      }
    }
  }
  return false;
});

这真的是风格问题,但这是 I 的写法:

return this.produits.filter(item => {
  if (item.codeproduct == this.codebar) return true;
  for (let { brandsubproduit } of item.produitbrand || [])
    for (let { codeproduct } of brandsubproduit || [])
      if (codeproduct == this.codebar) return true;
  return false;
});