2016-10-22 10 views
3

ねえ、誰もが私はForloopの混乱

を失敗しています。このforloop..butを設定しようとしている問題を抱えているあなたはこの絵here

を見れば、私はそれらのほとんどのドットが同じになるようにする必要があり彼らはしているどのセクションに応じて、大きな数などの色。

私は例1-5のためので、forループ

for(i = 1; i < 100 ; i++){ 

console.log("Number " + i + " with the color red") 

} 

を通してフロントページに要素を追加している、11 -15,21-25,31-35,41,45は赤色になります

regexを使用する必要がありますか?

+3

あなたはそれが色を変更してもらうために、これまでに試してみましたか? (いいえ、正規表現はまったく必要ではありませんが、これは数学の問題です) – Soviut

+0

私は、より条件文を行う極端な退屈な方法を持っていますが、私のコードでは最速の方法を見つけようとしています。厄介に見える –

+3

ヒント:赤でなければならないすべての数字に対して、10で割った場合、残余(モジュロ演算子)は<= 5になります。たとえば、「24%10 = 4」です。 – xbonez

答えて

2

あなたは入力として、0〜99の整数を受け取り、次の機能を使用することができます最終結果は、2つの部分で構成されている

((n % 10 > 4) ? 1 : 2) + ((n > 49) ? 2 : 0) 

  • 及び(1〜4)セクション番号を出力します。- この部分は、数字が0-4か5-9のどちらで終わるかをチェックします。前者の場合、出力1です。後者では、出力2です。
  • ((n > 49) ? 2 : 0) - nが50以上の場合(セクション1,2とセクション3,4を区別するために)最終結果に2を加えます。

この式は、以下のデモでgetSectionNumber(n)機能で実装されています

var table = document.querySelector('table tbody'); 
 

 
// n is a number between 0 and 99 
 
// output is a section (1 - 4) 
 
function getSectionNumber(n) { 
 
    return ((n % 10 > 4) ? 1 : 2) + ((n > 49) ? 2 : 0); 
 
} 
 

 
var sectionColors = { 
 
    1: 'darkred', 
 
    2: 'darkblue', 
 
    3: 'darkgreen', 
 
    4: 'yellow' 
 
}; 
 

 
for(var i = 0; i < 10; i++) { 
 
    var row = document.createElement('tr'); 
 
    table.appendChild(row); 
 
    for(var j = 0; j < 10; j++) { 
 
    var cell = document.createElement('td'); 
 
    var cellId = i*10 + j 
 
    cell.textContent = cellId; 
 
    cell.style.backgroundColor = sectionColors[getSectionNumber(cellId)]; 
 
    row.appendChild(cell); 
 
    } 
 
}
<table> 
 
    <tbody> 
 
    </tbody> 
 
</table>

+0

これを使用します。非常によく書いてくれてありがとう! –

1

三項演算子の使用:

for(i = 1; i < 101 ; i++){ 
 
    var color = ((i%10 != 0 && i%10 <= 5) && i<51) ? "red" 
 
    : ((i%10 === 0 || i%10 > 5) && i<51) ? "green" 
 
    :((i%10 != 0 && i%10 <= 5) && i>=51) ? "blue" 
 
    : "pink"; 
 
    console.log(i + " - " + color) 
 
}

するように、ここで、すべての100個の値をCONSOLE.LOGしないスニペットJSfiddleです:https://jsfiddle.net/jcky4dkp/1/

このコードは何をするのか?

最初の条件チェック番号の最後の桁が6未満と数自体が51未満の場合であれば:

(i%10 != 0 && i%10 <= 5) && i<51 

それが本当ならば、あなたは「赤」を持っているでしょう、それ以外の場合は、意志第二の条件を確認し、番号の最後の桁が5より大きく、数自体が51未満であれば場合:

(i%10 === 0 || i%10 > 5) && i<51 

それが本当ならば、あなたは「緑」があります、それ以外の場合は、三分の一をチェックします条件の最後の桁が6未満で、番号自体がgrの場合51以上食べる人:

(i%10 != 0 && i%10 <= 5) && i>51 

そうでなければ、それは「ピンク」が返されます、あなたは「青」があります本当なら

+1

コードは良いですが、あなたが何をしているのか、なぜこれが機能するのかを説明することで、これを完全な答えにしてください。 – Soviut

+1

Woooow。これははるかに速い:D OPはこの答えを見なければならない。 –