如何强制数组拥有特定数量的元素?
Javascript - How can i force an array to have a specific amount of elements
是否有一种简单的方法使数组具有特定数量的元素?从某种意义上说,如果您将更多的元素放入其中,它将覆盖第一个元素。
例如,我想要一个只包含2个元素的数组。如果我推入第三个元素,它应该覆盖最早的元素(in的第一个)。像一个堆栈。您可以使用计数器并使用所需长度的模进行插入。
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; }
所以正如我上面评论的那样,你可以通过数组子类化来做到这一点。下面的代码片段介绍了一个新的Array结构,它有两个新方法:last
和push
。然而,我们的新push
掩盖了Array.prototype
的实际push
方法。新的push
将第一个参数作为数组长度的限制,例如[1,2,3].push(4,"a","b","c")
将长度限制为4,结果将是[3,"a","b","c"]
。返回值将是数组中被删除的元素,因为我们在底层使用splice
。
function SubArray(...a) {
Object.setPrototypeOf(a, SubArray.prototype);
return a;
}
SubArray.prototype = Object.create(Array.prototype);
SubArray.prototype.last = function() {
return this[this.length - 1];
};
SubArray.prototype.push = function(lim,...a){
Array.prototype.push.apply(this,a);
return this.splice(0,this.length-lim);
};
myArray = new SubArray(1,2,3);
myArray.last();
myArray.push(4,"a","b","c");
console.log(myArray);
相关文章:
- 如何在不同的设备模式下强制元素的高度
- 如何在单击图示符时强制单击跨度元素
- 强制内部元素溢出-x
- 使用setTimeout在创建新元素之间强制延迟
- 当元素高度不够时,如何强制滚动
- 当一个元素被拖动到另一个容器并被捕捉到该容器时,如何强制jquery将其居中
- 强制转换 HTML 对象元素
- 强制将输入元素的语言切换为英语
- 在页面加载后强制重绘/重绘 Firefox 中的 DOM 元素
- 强制元素在 JavaScript 上拖动元素时将其悬停.没有jQuery
- 有没有办法强制工具提示显示在输入元素的特定位置
- 强制 ng 重复元素在过滤后重绘
- 在不实际更改DOM元素的情况下对其强制执行更改事件
- 正在尝试将元素ID强制转换为jQuery中的类选择器
- 如何在使用sap.ui.model.json.JSONModel向数组添加元素时强制进行绑定更新
- jquery ajax调用强制响应中的XML元素名称为小写
- 更新节点在 D3 强制布局中的子元素位置
- 如何强制对特定HTML元素进行淘汰更新
- 强制不要对伪元素 (:after) 使用换行符
- 有没有办法在元素上强制使用外来样式