我正在尝试获取一个数组来保存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>");
}
});
答案 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"]