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

ここには基本的に2つのステートメントがあります。シャツとナイキが存在する場合、またはナイキが存在するがカテゴリがまったくない場合に、このステートメントが正しいことを証明したいと思います。それがお役に立てば幸いですが、私はこれをコードレビューに移しますが、誰かが信用を得られるように確実な答えを待ちます:)...ヒントをありがとう。

4

3 に答える 3

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更新後):データについてもう少し詳しく知ったので、次のように質問します。「シャツとナイキが存在するか、ナイキが存在するがカテゴリがまったくない場合はtrue」、これが必要なものです。

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 に答える
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 に答える
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 に答える