如何在JavaScript中添加数组中前三个元素并删除之前的结果

3

我需要什么

  • 我需要将前三个元素存储在数组中。
  • 并从数组中删除前三个元素。
  • 当第四个元素添加到数组中时,将删除第一个元素,当第五个元素添加时,将删除前两个元素。
  • 数组的最大限制为3。

  • 例如arr[1,2,3];

  • 当插入第四个元素时,它将删除arr[1]索引,以此类推。

  • 并将数组存储在cookie中

js代码

   var cookie_event_id=document.getElementById("eventID").value;

    var e = $(window).height();

   var arr=[];
   if (cookie.get("event_id")) {
    var t=cookie_event_id;
    var t = cookie.get("event_id");
    console.log(arr.toString());

    arr.push(cookie_event_id);
    arr.shift(); 
    alert(cookie_event_id);

    var i = new Date;
    i.setDate(i.getFullYear() ), document.cookie = "event_id =" + cookie_event_id + ";expires=" + i.toUTCString() + ";domain=.10times.com;path=/"
} else
 {
    var t=cookie_event_id;
    var i = new Date;
    i.setDate(i.getFullYear() ), document.cookie = "event_id =" + t + ";expires=" + i.toUTCString() + ";domain=.10times.com;path=/"
}
  • 我希望将ID添加到数组中,然后将该数组推入cookie。

  • 当新元素添加时,删除数组的第一个索引,以此类推。

  • 数组的最大限制为3个。


1
你正在处理什么类型的数据?我认为underscore可以用于你所提出的大多数问题,即使你在这里询问了十个要做的事情。 - Mark C.
一个一个地来 - 从slice/splice开始,当你对某个东西有具体问题时再回来 - 这不是一个好的语法: i.setDate(i.getFullYear()), document.cookie ... 为什么要将日期设置为它自己的年份?这有什么意义? - mplungjan
4个回答

3

如果您想在数组开头添加新元素: 请使用unshift

var arr = [1, 2, 3];
arr.unshift(4); // [4, 1, 2, 3]
arr.length = 3; // [4, 1, 2]
unshift()方法将一个或多个元素添加到数组的开头,并返回数组的新长度。
文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift 如果你想要添加元素到末尾: 请使用 push 和 shift 方法:
var arr = [1, 2, 3];
arr.push(4); // [1, 2, 3, 4]
arr.shift(); // [2, 3, 4]

push

push() 方法向数组末尾添加一个或多个元素,并返回新数组的长度。

参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/push

shift

shift() 方法从数组中删除第一个元素,并返回该元素。此方法会改变数组的长度。

参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift


1
我理解您需要保留最近添加的三个项目:
myArray = [];

var addEItem = function(item) {
    myArray.push(item); // Add at the end of the array
    if (myArray.length > 3) {
        myArray.shift(); // Remove 1st item if size is larger than 3
    }
}

0
你可以使用 array.splice()。这里是一个小例子:
var arr = ["el1", "el2", "el3","el4", "el6", "el7"];
console.log(arr.splice(3)); // ["el4", "el6", "el7"]

你需要做的是将你的结果推送,然后像上面的例子一样进行拼接。 http://jsfiddle.net/ztvs2trt/

抱歉,我是说splice! :) - Radonirina Maminiaina

0

更新的工作代码

 var cookie_event_id=document.getElementById("eventID").value;
 //alert(cookie_event_id);
var e = $(window).height();

 var arr=[];
if (cookie.get("event_id")) {

    var t = cookie.get("event_id") + ','+cookie_event_id;
   var arr = JSON.parse("[" + t+ "]");
    if(arr.length > 3)
    arr.shift(); 
    alert(arr);
    arr.toString();


    var i = new Date;
    i.setDate(i.getFullYear() ), document.cookie = "event_id =" + arr + ";expires=" + i.toUTCString() + ";domain=.10times.com;path=/"
} else
 {
    var t=cookie_event_id;
    var i = new Date;
    i.setDate(i.getFullYear() ), document.cookie = "event_id =" + t + ";expires=" + i.toUTCString() + ";domain=.10times.com;path=/"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接