jQuery:对每个$.的结果进行排序
jQuery: Sort results of $.each
我能找到的关于使用$.each
的人的唯一例子是html示例,这不是我想要的。我有以下对象:
var obj = {
obj1: 39,
obj2: 6,
obj3: 'text'
obj4: 'text'
obj5: 0
};
我像这样循环浏览对象:
$(array).each(function(index, value) {
// ...
});
我想按obj3
和obj4
排序。最好不要使用异步方法,如何在输出之前(或输出期间)对结果进行排序?(我也不想循环两次,因为在任何给定的时间都可能有数百个。
var array = {
obj1: 39,
obj2: 6,
obj3: 'text'
obj4: 'text'
obj5: 0
};
不是数组(尽管有其名称)。它是一个物体。按obj3
和obj4
排序的想法实际上没有意义。
现在,如果要将此对象转换为对象数组,可以使用array.sort
方法对该数组进行排序。
var array = [
{ obj1: 39,
obj2: 6,
obj3: 'text'
obj4: 'text'
obj5: 0
},{ obj1: 40,
obj2: 7,
obj3: 'text2'
obj4: 'text3'
obj5: 0
}
];
array.sort(function(a, b) {
var textA = a.obj3.toLowerCase();
var textB = b.obj3.toLowerCase();
if (textA < textB)
return -1;
if (textA > textB)
return 1;
return 0;
});
当然,按照数字属性排序,它只会是:
array.sort(function(a, b) {
return a.obj1 - b.obj1;
});
您可以从对象中获取所有属性名称(例如键),对它们进行排序,然后根据需要按顺序迭代属性。要做到这一点,你应该这样做:
var obj = {
obj1: 39,
obj2: 6,
obj3: 'text'
obj4: 'text'
obj5: 0
};
var keys = [];
for (var prop in obj) {
keys.push(prop);
}
keys.sort();
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var value = obj[key];
// do whatever you want to do with key and value
}
正如您将看到的,这需要额外的迭代来获取和排序键列表。我不知道该怎么办。获取密钥可以在具有obj.keys()
的现代浏览器中完成,但在内部,这可能是对对象属性的迭代,您需要一个填充程序才能在旧浏览器中工作。
相关文章:
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- 如何对javascript表进行排序(升序或降序),该表是某些SQL操作表的结果
- 如何在AngularJS中根据子结果集排序结果
- 重新排序angularjs ngRepeat与后续数据结果
- 对indexedDB查询的结果进行排序
- 如何对select2自动完成结果进行排序,只显示以第一个字母开头的项目
- 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序
- 根据所选排序动态更改结果
- 按活动排序,但不在结果中显示活动
- 按距离对搜索结果进行排序
- 使用 AJAX 回调更新挖空可观察数组会生成随机排序的结果
- JS AJAX 提前键入结果排序/竞争条件
- Javascript JSON 结果排序
- 将对象属性设置为排序结果而不进行排序
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- 随后的多维数组排序会产生意外的结果
- javascript排序和排序等于结果.怎样
- 按HTML表列对查询结果排序
- 按数组大小对结果排序
- 通过JavaScript奇数结果排序JSON对象