1

配列で反復しようとしています

[1,2,3,4,5,6]

そして、それらをオブジェクトに保存して、次のようにします。

[
   {1},
   {1,2},
   {1,2,3},
   {2,3,4},
   {3,4,5},
   {4,5,6}
]

お気づきかもしれませんが、制限の 3 に達すると、配列にプッシュされる最初の要素が最初に削除されます。

私はこれをやっています:

var given = [1,2,3,4,5,6];
var limit = 3;
var start = 1;
var result = [];
for (var i = 0; i < given.length; i++) {
  var j = 0;
  while(j <= start) {
    j++;
    if(start <= limit) {start++};
    result.push(given[i]);
  }
};
console.log(result);

私の答えは非常に間違っているようです。私はまだそれを1つずつ押してから増やすことに固執しています。だから私はまだ、最も古い要素を置き換えることを考えていません。

編集:

また、配列をシフトせずに新しい値を最後に配置する代わりに、値を置き換えてインデックスを維持することを考えています...

つまり

[
    {1},
    {1,2},
    {1,2,3},
    {4,2,3},
    {4,5,3},
    {4,5,6}
]
4

1 に答える 1

3

試す

var given = [1, 2, 3, 4, 5, 6];
var limit = 3;
var start = 1;
var result = [], rec = [];
for (var i = 0; i < given.length; i++) {
    rec = rec.slice(0);
    if(rec.length == limit){
        rec.shift();
    }
    rec.push(given[i]);
    result.push(rec)
}
console.log(JSON.stringify(result));

デモ:フィドル

O/P

[[1],[1,2],[1,2,3],[2,3,4],[3,4,5]]

アップデート

var given = [1, 2, 3, 4, 5, 6];
var limit = 3;
var start = 1;
var result = [],
    rec = [];
for (var i = 0; i < given.length; i++) {
    rec = rec.slice(0);
    rec[i % limit] = given[i]
    result.push(rec)
}
console.log(JSON.stringify(result));

デモ:フィドル

O/P

[[1],[1,2],[1,2,3],[4,2,3],[4,5,3],[4,5,6]] 
于 2013-10-09T03:57:07.200 に答える