Javascript 使数组保存10个最新条目

Javascript 使数组保存10个最新条目,javascript,jquery,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) {

我正在尝试获取一个数组来保存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>");
    }
});
$。每个(消息、函数(键、值){
if(值!=null){
$(“#消息”)。追加(值+”
”; } });
var消息=[]//改为使用数组文本。
函数addmessage(message){
//取消移位将新值加载到开头
messages.unshift(消息);
//如果要将其放在末尾,可以使用push()
//消息。推送(消息);
//如果你真的想让它保持10,那就把最后一个去掉
如果(messages.length>10){
messages.pop();
//如果push()
//messages.shift()
}              
}
//循环并首先附加“最新”
$.each(消息、函数(键、值){
if(值!=null){
$(“#消息”)。追加(值+”
”; } });
如果您随后以最新的优先顺序实时/动态加载消息,

var messages=[]//改为使用数组文本。
函数addmessage(message){
//取消移位将新值加载到开头
messages.unshift(消息);
//如果要将其放在末尾,可以使用push()
//消息。推送(消息);
//如果你真的想让它保持10,那就把最后一个去掉
如果(messages.length>10){
messages.pop();
//如果push()
//messages.shift()
}              
}
//循环并首先附加“最新”
$.each(消息、函数(键、值){
if(值!=null){
$(“#消息”)。追加(值+”
”; } });

如果您随后以最新的优先顺序实时/动态加载消息,

,可能您希望项目按相反的顺序加载?

,可能您希望项目按相反的顺序加载?

您希望的顺序是什么?您将条目放在数组的开头,因此顺序颠倒

例如:

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();
}
如果您想让它以另一种方式运行,则函数应如下所示:

["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"]

你想要什么样的订单?您将条目放在数组的开头,因此顺序颠倒

例如:

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();
}
如果您想让它以另一种方式运行,则函数应如下所示:

["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"]

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

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

这将在末尾添加新消息,并在长度达到10后从前面删除一条消息。

最简单的形式是:

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

这将在末尾添加新消息,并在长度达到10时从前面删除一条消息。

Yep,还有
if(messages.length>10)messages.pop()
很好的提示,从来没有想过从0开始:DLatest应该是最后一个,所以不需要prepend()。您真正想要的顺序是什么,它是用来聊天的,所以它保留了最后10条消息,然后应该按照它们出现的顺序显示它们,所以我想我可以使用
push()
而不是
unshift()
,然后使用
shift()
而不是
pop()
是的,还有
if(messages.length>10)消息。pop()
很好的提示,从来没有想过从0开始:DLatest应该是最后一个,所以不需要prepend()。你真正想要的顺序是什么?好吧,它是用来聊天的,所以它保留了最后10条消息,然后它应该按照它们出现的顺序显示它们,所以我想我可以使用
push()
而不是
unshift()
然后使用
shift()
而不是
pop()
嗯,它们根本没有按顺序出现。嗯,它们根本没有按顺序出现。访问缺少的成员将返回
未定义的值
,因此您的测试正在进行类型转换。考虑<代码>(关键字)< /COD>。访问缺少的成员将返回一个值<代码>未定义,因此您的测试在类型转换上不存在。考虑<代码>(关键字)< /代码>。