2016-11-17 5 views
0

条件がtrueの場合、arrから各カウントの値を取得する配列を出力しようとしています。配列のcounts要素の配列を作成する

例:

//tasksTypes([1, 2, 4, 2, 10, 3, 1, 4, 5, 4, 9, 8], 1) [2, 8, 2] 

マイコード:

function tasksTypes(deadlines, day) { 
    var list= []; 
    var today = 0; 
    var upcoming = 0; 
    var later = 0; 

    for(var i=0; i<deadlines.length; i++){ 
     if(deadlines[i] <= day){ 
      today += today 
      list.push(today) 
      if(deadlines[i] <= day + 7){ 
       upcoming += upcoming 
       list.push(upcoming) 
       if(deadlines[i] > day + 7){ 
        later += later 
        list.push(later) 
       } 
      } 
     } 
    } 
    return list 
} 
+0

をあなたの締め切り配列は何ですか? – Geeky

+0

あなたの条件は?中間の 'if'条件は実行されると常に真であり、実行されると' if'条件は真にならないので、この点でコードは本当に役立ちません。 – trincot

+0

文を ';'で終わらせてください。そうしないと予期しないエラーが発生することがあります。 – Barmar

答えて

0

私は、これはあなたが探しているものだと思います。 deadlinesの各値がdayに基づく特定の基準を満たすインスタンスの数をカウントするだけです。

function tasksTypes(deadlines, day) { 
 
    var today = 0; 
 
    var upcoming = 0; 
 
    var later = 0; 
 
    
 
    for(var i = 0; i < deadlines.length; ++i) { 
 
    if(deadlines[i] <= day) 
 
     today++; 
 
    else if(deadlines[i] <= day + 7) 
 
     upcoming++; 
 
    else 
 
     later++; 
 
    } 
 
    
 
    return [today, upcoming, later]; 
 
} 
 

 
console.log(tasksTypes([1, 2, 4, 2, 10, 3, 1, 4, 5, 4, 9, 8], 1));

+0

ありがとう非常に私のために今はっきりしています。 –

1

カウントアレイに期限配列の削減:

function tasksTypes(deadlines, day) { 
 
    return deadlines.reduce(function(counts, deadline) { 
 
    var index = deadline <= day ? 0 : (deadline <= day + 7 ? 1 : 2); 
 
    
 
    counts[index]++; 
 
    
 
    return counts; 
 
    }, [0, 0, 0]); 
 
} 
 

 
var result = tasksTypes([1, 2, 4, 2, 10, 3, 1, 4, 5, 4, 9, 8], 1); 
 

 
console.log(result);

関連する問題