我想创建一个不会超过5个元素的javascript数组,并将任何溢出的元素删除为队列。到目前为止,我最好的想法是覆盖数组推送方法并检查数组的当前长度是否超过5,如果是,则在添加元素后,执行array.splice(0,1)以删除最后一个元素。这是正确的方法吗?
答案 0 :(得分:0)
这样的事可以吗?
var myArr = [];
function arrayPusher(data) {
//Add the data to the front of the array.
myArr.unshift(data);
//After adding the element to the array,
//if it is too long, remove the last item.
if (myArr.length > 5) {
myArr.pop();
}
}
答案 1 :(得分:0)
我看不到你失去对阵列控制权的情况,但在你的长度检查功能中加array.length = 5;
要简单得多。这将在一次移动中删除第5个元素之后的任何内容。
答案 2 :(得分:0)
嗯,我认为最好的想法是制作一个循环,重新使用你的功能,如下:
function onlyN_Elements(N,vector){
if(vector.length<=N){
return vector;
}else{
vector.pop();
onlyN_Elements(N,vector);
}
}
所以你总是想要做到这一点,就这样做:
a = [ 2, 3, 4, 5, 6, 7, 8]; //vector
N = 5 //number of maximun length vector
onlyN_Elements(N,a); // just execute the function
--> output --> console.log(a) --> a = [ 2, 3, 4, 5, 6 ]
所以使用此功能只需改变'N',如果你想改变矢量的最大长度。 ;)