是否有一种简单的方法可以使数组具有特定数量的元素。 从某种意义上说,如果你向它推进更多,它就会覆盖第一个元素。
例如我想要一个数组只包含2个元素。如果我推第三个元素,它应该覆盖最早的元素(第一个)。 像堆栈一样。
答案 0 :(得分:0)
您可以使用计数器并使用所需长度的模数进行插入。
function push(array, length) {
var counter = 0;
return function (value) {
array[counter % length] = value;
counter++;
};
}
var array = [],
pushToArray = push(array, 2);
pushToArray(1);
console.log(array);
pushToArray(2);
console.log(array);
pushToArray(3);
console.log(array);
pushToArray(4)
console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)
因此,正如我上面评论的那样,你可以通过数组子类来做到这一点。以下代码段引入了一个新的Array结构,其中包含两个新方法elapsed
和last
。但是,我们的新push
会隐藏push
的真实push
方法。新Array.prototype
将第一个参数作为数组长度的限制,例如push
将长度限制为4,结果将为[1,2,3].push(4,"a","b","c")
。返回值将是数组中已删除的元素,因为我们正在使用[3,"a","b","c"]
。
splice