使数组保持10个最新条目

时间:2012-04-18 06:26:58

标签: javascript jquery

我正在尝试获取一个数组来保存10个最新值,到目前为止它无法使其工作。

var messages = new Array(10);

function addmessage(message) {
    messages.unshift(message);
    messages.length = 10;
}

但是当我试图显示数组时,我无法按顺序显示消息......

我用

显示数组
$.each(messages, function(key, value) {
    if(value != null) {
        $("#messages").append(value + "<br>");
    }
});

4 个答案:

答案 0 :(得分:6)

var messages = []; //use an array literal instead.

function addmessage(message) {  

    //unshift loads the new value into the beginning
    messages.unshift(message);

    //if you want to place it in the end, you can use push()
    //messages.push(message);

    //if you really want it to remain 10,  pop off the last
    if(messages.length > 10){
        messages.pop();
        //and if push()
        //messages.shift()
    }              
}

//loop through and append, "latest" first
$.each(messages, function(key, value) {

    if(value != null) {
        $("#messages").append(value + "<br>");
    }

});

如果您随后使用最新的you can use .prepend()

实时/动态加载消息

答案 1 :(得分:1)

以最简单的形式,您可以:

messages.push(message);
messages.length > 9 && messages.shift();

这将在最后添加新消息,并在长度达到10时从前面删除一个消息。

答案 2 :(得分:0)

Try this solution,也许你想要的是相反顺序的物品?

答案 3 :(得分:0)

您期望什么样的订单?您将条目放在数组的开头,因此顺序是反转的。

例如:

addmessage('test'); addmessage('test2'); addmessage('test4');
addmessage('test6'); addmessage('test23'); addmessage('test34');
addmessage('test32'); addmessage('test3'); addmessage('test45');
addmessage('test7'); addmessage('test8');

结果如下:

["test8", "test7", "test45", "test3", "test32", "test34", "test23", "test6", "test4", "test2"]

如果您希望以相反的方式使用它,那么函数应该如下所示:

function addmessage(message){
  messages.push(message);
  messages.shift();
}

结果反过来了:

["test2", "test4", "test6", "test23", "test34", "test32", "test3", "test45", "test7", "test8"]