我得到了理想的结果,但需要按字母顺序排序。我不确定在代码中应该放入什么:
function showClients(data) {
var html = '';
for (var clientId in data) {
html += '<p>' + clientId;
html += data[clientId].connected ? ' connected' : ' disconnected';
html += '</p>';
}
if (!html) {
html += '<p>No clients connected</p>';
}
$('#connected_clients').html(html);
}
答案 0 :(得分:1)
如果我的数据结构布局正确,它就是一个键/值对象,它又包含具有连接等信息的对象。
在这种情况下,您可以先使用Object.keys
获取密钥,对Object.keys(data).sort()
进行排序,然后从那里创建html。例如:
function showClients(data) {
var html = Object.keys(data).sort().reduce(function(h, clientId){
return h + '<p>' + clientId
+ (data[clientId].connected ? ' connected' : ' disconnected')
+ '</p>';
}, '')
|| '<p>No clients connected</p>';
$('#connected_clients').html(html);
}
function showClients(data) {
var html = Object.keys(data).sort().reduce(function(h, clientId){
return h + '<p>' + clientId
+ (data[clientId].connected ? ' connected' : ' disconnected')
+ '</p>';
}, '')
|| '<p>No clients connected</p>';
$('#connected_clients').html(html);
}
showClients({Client3:{connected:true},Client1:{connected:true},Client2:{connected:false}});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id=connected_clients></div>
答案 1 :(得分:0)
就sort
等数据致电Array.prototype.sort(data)
。如果您没有通过比较功能,它将按字母顺序对元素进行排序。
function showClients(data) {
var html = '';
for (var clientId in Array.prototype.sort.call(data)) {
html += '<p>' + clientId;
html += data[clientId].connected ? ' connected' : ' disconnected';
html += '</p>';
}
if (!html) {
html += '<p>No clients connected</p>';
}
$('#connected_clients').html(html);
}