使用jQuery对解析数据进行排序
Sorting Parsed Data with jQuery
我想用一个简单的.sort()
.对客户端列表(这是变量"clients"的密钥列表)进行排序
我无法对"客户端"进行排序,但我可以对"key_list"进行排序(它们在我的控制台中按字母顺序排列)。
所以。。。
我在document.write中看到的是一个带有"Client:(Client_name)"的客户端列表,每个客户端后面都有一个换行符,这很好。但它没有特别的顺序。
我在console.log中看到的是一个按字母顺序排列的客户端列表,这很好。但在那里,每个客户端都没有显示为"client:(client_name)",也没有换行符。这是一个大列表,每个项目都用逗号分隔。
为什么我无法对"客户端"中的密钥进行排序?这是我试图访问解析的"数据"的方式吗?
$.ajax ({
url: 'data.php?',
type: 'GET',
dataType: "json",
success: function(data) {
var clients = JSON.parse(data);
for (var key in clients) document.write('Client:' + ' ' + key + '<br>');
var key_list = Object.keys(clients);
console.log(key_list.sort(clients));
}
});
因为console.log()只打印key_list.sort(client)对象。因此,基本上,您记录的是对象,而不是对象中的每个元素。
因此,你当然不会在文档中按照你想要的顺序打印客户端,因为你在排序之前就要这样做。就像Travis J所说的,你应该只使用.sort().
所以你应该这样做;console.log(clients.sort());
这将允许您打印整个对象,并按排序顺序打印出所有客户端。
编辑:
$.ajax ({
url: 'data.php?',
type: 'GET',
dataType: "json",
success: function(data) {
var clients = JSON.parse(data);
var sortedClients = clients.sort();
for (var key in sortedClients){
document.write('Client:' + ' ' + key + '<br>');
console.log('Client: ' + key);
}
});
sort
需要一个回调函数,该函数接受两个参数,还需要一个基于这两个参数之间比较的返回值。
.sort(function(a,b){ return a-b; });
您正在从反序列化的json中发送一个对象排序,json不是一个接受两个参数并根据比较返回值的函数,因此排序不起作用。默认情况下,排序将使用字典比较。
这将是默认调用
console.log(key_list.sort());
相关文章:
- 对角度数据表中括号内的数字进行排序
- 角度未排序数据
- 排序数据表
- AngularJs orderby 过滤器无法正确排序数据
- Magento网站-按选项排序:上下箭头与排序数据绑定,只需删除上下箭头即可
- (钛工作室)显示带有排序数据的表视图
- 如何在D3折线图中禁用X轴上的排序数据
- 如何提高Highcharts的性能并避免排序数据出现错误15
- 可排序数据和更新数据库问题
- 使用Laravel 4+从jQuery/ajax保存串行可排序数据
- JavaScript中高效的排序数据结构
- 预排序数据或Angular orderBy哪个性能更好
- HandsonTable通过从ajax加载排序数据
- 在angularJS中排序数据
- Mithril.js:如果视图使用子组件,排序数据不会重新渲染
- 在MemoryStore(或任意数据数组)中排序数据
- js动态改变排序数据值
- 从json中排序数据
- DC/交叉过滤器行图排序数据,馈送图表
- 我如何排序数据表列,其中包含十进制值与$符号- JQuery数据表