2016-10-14 9 views
2

これは実際には論理的な質問です。他のすべての日付が、常に最終日を含める必要があります

のセットはと異なる場合があります。 3つの例は以下のとおりである。

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan 

1-Jan | 2-Jan | 3-Jan | 4-Jan | 5-Jan | 6-Jan | 7-Jan | 8-Jan | 9-Jan 

1-Jan | 2-Jan | 3-Jan 

おき、他の日付が返されますが、最終日は必ず含まれなければならないように、私はロジックをしたいと思います。したがって、上記の3つに変換されます、次の

 | 2-Jan |  | 4-Jan |  | 6-Jan |  | 8-Jan 

1-Jan |  | 3-Jan |  | 5-Jan |  | 7-Jan |  | 9-Jan 

1-Jan |  | 3-Jan 

セットは私が使用している

(私が働いている現在のセットが、31の長さを持っている)60に任意の長さまで可能返すようにさかのぼりかを決定するために奇数/偶数使用しようとしたD3.jsと:

var setLength = dataSet.length;  
var divisor = (setLength%2==0 ? 2 : 3); 

をそれから私は、関数内で除数を使用します。

function(d,i) { 
    if(i%divisor == 0) return d.date); 
} 

上記を変更して、セットの最後のメンバーを含む他のすべての日付を返すようにするにはどうすればよいですか?

+0

は、セットが配列に格納され、逆の順序で配列を返しますか? – guest271314

+0

@ guest271314配列内にあるので、 '(d、i)' - 'i'は各メンバのインデックスです – whytheq

答えて

2

あなたはインデックスに対して間違ったテストをしていたと思います。設定された長さであってもオッズをフィルタである場合:%2!=0、奇数フィルタは追いついた場合:​​あなたによって、アレイ.length - 1から-1に反復するデクリメント初期化変数をforループを使用することができ

let data = [ 
 
    ["1 - Jan", "2 - Jan", "3 - Jan", "4 - Jan", "5 - Jan", "6 - Jan", "7 - Jan", "8 - Jan"], 
 
    ["1 - Jan", "2 - Jan", "3 - Jan", "4 - Jan", "5 - Jan", "6 - Jan", "7 - Jan", "8 - Jan", "9 - Jan"], 
 
    ["1 - Jan", "2 - Jan", "3 - Jan"], 
 
    ["1 - Jan", "2 - Jan", "3 - Jan","4 - Jan"] 
 
]; 
 

 
let filtered = data.map(dates => { 
 
    let odd = dates.length%2!=0; 
 
    return dates 
 
    .filter((e, index) => odd ? index%2==0 : index%2!=0) 
 
}); 
 

 
console.log(filtered);

2

2を各反復で最終的に発現させる。新しい配列に要素をプッシュし、

var arr = [ 
 
    ["1-Jan", "2-Jan", "3-Jan", "4-Jan" 
 
    , "5-Jan", "6-Jan", "7-Jan", "8-Jan"] 
 

 
    , ["1-Jan", "2-Jan", "3-Jan", "4-Jan" 
 
    , "5-Jan", "6-Jan", "7-Jan", "8-Jan", "9-Jan"] 
 

 
    ,["1-Jan", "2-Jan", "3-Jan"] 
 
]; 
 

 
function everyOtherFromEnd(arr) { 
 
    for (var n = arr.length - 1, res = []; n > -1; res.unshift(arr[n]), n -= 2); 
 
    return res 
 
} 
 

 
arr.forEach(function(curr) { 
 
    console.log(everyOtherFromEnd(curr)) 
 
})

+1

' push() 'の代わりに' res.unshift() 'を使うことができます'res.reverse()'を呼び出す –

関連する問題