0

好吧,我知道这是一团糟。这就是我在这里发布它的原因。我希望你能理解我试图创造的逻辑。有没有更好的方法来实现这一点?

else if (((!(lc(this).getByIndex(i).dim2.Shirts)) && ('Nike' in lc(this).getByIndex(i).dim3)) 
    || (('Nike' in lc(this).getByIndex(i).dim3) && ('Shirts' in lc(this).getByIndex(i).dim2)))

这里基本上有两个陈述:如果 Shirts AND Nike 存在或 Nike 但根本没有类别,我希望这个陈述证明是正确的。希望这会有所帮助,但我会将其移至代码审查,但会等待一个可靠的答案,以便有人获得信任:) ...感谢您的提示。

4

3 回答 3

2

根据 GitaarLAB 的回答,这个怎么样?

...
else {
    var x      = lc(this).getByIndex(i),
        y      = x.dim2.Shirts,
        nike   = 'Nike'   in x.dim3,
        shirts = 'Shirts' in x.dim2;

    if (!y && nike || nike && shirts) { ... }
}
于 2012-07-30T23:11:24.527 回答
2

你可以这样做:

else {
  //comparisons
  var a=yadayadayada,
      b=blablabla,
      c=1024,
      d=document.getElementById('something').value;
      //and so on
  if( a===b || c<=d ){ //that should keep your if-clause a lot more readable!!
    //actions
  }
}

希望这可以帮助!

更新(在 TS 更新之后):现在我们对您的数据有了更多了解,您会问:“如果 Shirts AND Nike 存在或 Nike 但根本没有类别,则为真”,那么这就是您想要的:

else {
  var b='Nike', //brand
      c='Shirts', //category
      d=lc(this).getByIndex(i),
     d2=d.dim2,
     d3=d.dim3;
  if( ((b in d2) && d2[c]) || (b in d2) ){ 
    //actions
  }
}
于 2012-07-30T22:36:11.637 回答
1

既然你有“耐克……等等”。在这两个语句中,您都可以将其缩小为:

else if ( ('Nike' in lc(this).getByIndex(i).dim3)
  && (!lc(this).getByIndex(i).dim2.Shirts || ('Shirts' in lc(this).getByIndex(i).dim2)) )
于 2012-07-30T23:12:47.890 回答