javascript排序和排序等于结果.怎样
javascript sort and sort equals on result. how?
我在排序结构为{"name","count"}的对象时遇到问题:
1. name => "aaa", count => 1
2. name => "bbb", count => 2
3. name => "ccc", count => 3
4. name => "ddd", count => 1
5. name => "eee", count => 1
我需要按"计数"(从小到大,然后从大到小)对其进行排序。
我的分拣功能:
mass.sort(compareElements);
function compareElements(a, b)
{
if(a < b) return -1;
else if(a > b) return 1;
else return 0;
}
在第一次调用(从小到大)时,我得到一个结果"res1"
在第二次调用(从大到小)时,我得到结果"res2"
在第三次调用(再次从小到大)时,我得到"res3"!==='res1'!!
res1和res3中元素的顺序不相同。我需要他们是一样的。
为了使排序稳定,您需要根据"相等"项目的索引进行比较:
// mass = [{name:…, count:…}, {name:…, count:…}, …]
for (var i=0; i<mass.length; i++)
mass[i].index = i;
mass.sort(function(a, b) {
return compareElements(a, b) || a.index - b.index;
});
function compareElements(a, b) {
// something
return a.count - b.count;
}
如果您的对象像:
var arrObj = {
name: "aaa",
count: 1
};
使用此功能进行比较:
function compareElements(a, b)
{
return a.count - b.count;
}
相关文章:
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- 如何对javascript表进行排序(升序或降序),该表是某些SQL操作表的结果
- 如何在AngularJS中根据子结果集排序结果
- 重新排序angularjs ngRepeat与后续数据结果
- 对indexedDB查询的结果进行排序
- 如何对select2自动完成结果进行排序,只显示以第一个字母开头的项目
- 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序
- 根据所选排序动态更改结果
- 按活动排序,但不在结果中显示活动
- 按距离对搜索结果进行排序
- 使用 AJAX 回调更新挖空可观察数组会生成随机排序的结果
- JS AJAX 提前键入结果排序/竞争条件
- Javascript JSON 结果排序
- 将对象属性设置为排序结果而不进行排序
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- Jquery排序结果不一致
- 排序结果在JSON变量按整数
- 基于第一个数组的排序结果对多维数组进行排序
- 使用地理定位,按距离排序结果
- 在Select2多选择元素中排序结果选项