1

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

4 に答える 4

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>");
    }

});

次に、最新のメッセージを最初にリアルタイム/動的にロードする場合は、次を使用できます。.prepend()

于 2012-04-18T06:33:46.370 に答える
1

最も単純な形式では、次のものを使用できます。

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

これにより、新しいメッセージが末尾に追加され、長さが 10 になると先頭から 1 つが削除されます。

于 2012-04-18T07:11:49.480 に答える
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"]
于 2012-04-18T06:42:21.470 に答える
0

このソリューションを試してみてください。逆の順序でアイテムが必要な場合がありますか?

于 2012-04-18T06:38:34.590 に答える