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},
    {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));

演示:小提琴

输出/输出

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

演示:小提琴

输出/输出

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