固定数组,当它达到极限时,从端点移除元素-Javascript

固定数组,当它达到极限时,从端点移除元素-Javascript,javascript,Javascript,下午好!我希望创建一个长度为5的固定数组,在其中存储最近查看的ID。当它达到从末尾删除元素的限制时 例如: array = ['5', '4', '3', '2', '1'] // Array of 5 with ID's 当我添加一个id时,数组希望如下所示: array = ['6', '5', '4', '3', '2']; 继续前进 非常感谢您抽出时间,我尊重您的帮助。您可以取消移动阵列,并将长度调整为所需长度和旧长度中的最小值 函数,数组,值{ array.unshiftvalu

下午好!我希望创建一个长度为5的固定数组,在其中存储最近查看的ID。当它达到从末尾删除元素的限制时

例如:

array = ['5', '4', '3', '2', '1'] // Array of 5 with ID's
当我添加一个id时,数组希望如下所示:

array = ['6', '5', '4', '3', '2'];
继续前进


非常感谢您抽出时间,我尊重您的帮助。

您可以取消移动阵列,并将长度调整为所需长度和旧长度中的最小值

函数,数组,值{ array.unshiftvalue; array.length=Math.minarray.length,5; 返回数组; } 变量数组=[], 我
对于i=0;i<10;i++console.logunshiftarray,i.join“” 这里有一个函数,它接受一个id,如果超过5个元素,则删除最后一个元素,然后将id添加到数组的开头

function addId(id, array) {
  if (array.length === 5) {
    array.pop();
  }
  array = array.splice(0, 0, id);
  return array;
}

您可以为自己创建一个管理ID的小类

类ID{ 建造师{ 这个。_store=[]; } 阿迪德{ 如果this.store.length>4 this.\u store.shift; 这是.\u store.pushid; } 去商店{ 把这个还给商店; } } const id=新id; id.add1; id.add2; id.add3; id.add4; id.add5; id.add6; id.add7; id.add8; id.add9; console.logid.store;
这应该能奏效。任何时候需要向数组中添加元素时,您都可以调用该函数。

如果数组的长度等于您希望数组的最大长度,您可以使用array.prototype.pop修改数组的push方法来删除数组的最后一个元素

变量数组=['5','4','3','2','1']; array.maxlength=5; array.push=functionelem{ 如果this.length==this.maxlength{ 这是流行音乐; } return[].unshift.callthis,elem; } 数组。按'6'; console.logarray 你可以用它来做这件事,还有更多。例如,这里有一个简单的代理,它只将数组保留为5个元素。这样做的好处是,它仍然像一个具有长度、贴图和所有其他内容的数组

设置此选项是为了在取消移动时,额外的图元将从末端脱落。当然,你可以用推的方式做相反的事情。只要索引小于5,也可以手动按索引分配

var limitedArrayProxy={ 设置:函数目标、属性、值、接收者{ if!isNaNproperty{ ifparseIntproperty<5{ 目标[财产]=价值; } } 返回true; } }; var limitArray=新代理[],limitedArrayProxy; //推动一些元素 limitArray.push1、2、3 console.loglimitArray //再解几个 limitArray.unshift5,4 console.loglimitArray //现在长度为5,取消移动将添加到前面 //最后一个元素会脱落 limitArray.unshift10 console.loglimitArray //手动更改索引2 limitArray[2]=手动更改 console.loglimitArray //它不会让你推超过五个 limitArray.push20 console.loglimitArray //无法添加5或更大的索引 limitArray[5]=溢出 console.logstill 5元素:,limitArray //它仍然像一个数组 //使用长度和像map这样的方法 console.loglength,limitArray.length
console.logmap squares,limitArray.mapi=>i**2您已经尝试了什么,您的卡在哪里?请尝试您的数组。splice-1,1,它将从数组中删除最后一个元素。您可以在将新元素推入数组后添加此代码。我尝试以硬编码方式执行此操作。但我想让它更简单一点,我正在寻找其他有效的替代方案。正如@bambam所做的,干净简单。我喜欢简单,但第5行不正确,array.splice返回删除的元素。数组是通过引用修改的,我们不需要返回值。这里我们需要的是函数addIdid,array{if array.length==5{array.pop;}array.0,0,id;return array;}
var array = ['5', '4', '3', '2', '1'];

console.log(array);
queue('6');
console.log(array);

function queue(number){
    array.pop(); //removes last element from array
    array.splice(0, 0, number);//puts new number in first spot
}