首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript对对象的对象排序

javascript对对象的对象排序
EN

Stack Overflow用户
提问于 2011-07-14 06:17:12
回答 3查看 3.7K关注 0票数 0

我有一个对象的对象。(因为我要使用关联数组,所以对象的对象,而不是对象的数值数组)

代码语言:javascript
运行
复制
var tasks=new Object();

for(...){
tasks[foo-i]={};
tasks[foo-i].index=....;
tasks[foo-i].name=...;
}

我有一个输出任务名称的函数,但它们必须按照索引的升序排列。所以,我必须有一个临时的排序函数。你会怎么做呢?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-14 06:26:21

选项1:按任务对象上的键顺序输出:

也许有一种更优雅的方法,但这种方法将所有任务的键从对象中取出,对它们进行排序,然后使用有序索引数组按键的顺序遍历原始对象(如果我正确理解您要做的事情的话)。

代码语言:javascript
运行
复制
var indexArray = [];
var i;
for (i in tasks) {
    indexArray.push(i);   // collect all indexes
}
indexArray.sort(function(a,b) {return(a-b);});  // sort the array in numeric order
for (i = 0; i < indexArray.length; i++) {
    console.log(tasks[indexArray[i]].name);
}

您可以使用tasks.keys作为获取对象索引的快捷方式,但这并不是普遍可用的,因此无论如何您都必须有一种替代方法。

选项2:按嵌入索引tasksi.index的顺序输出:

再读一遍你的问题,我意识到可能还有另一种方式来解释你的问题。也许您是指在索引顺序中,.name旁边的.index数据,而不是tasks对象上的索引键。如果是这样的话,就需要一个不同的例程:

代码语言:javascript
运行
复制
var sorted = [];
var i;
for (i in tasks) {
    sorted.push(tasks[i]);   // collect items from tasks into a sortable array
}
sorted.sort(function(a,b) {return(a.index - b.index);});  // sort the array in numeric order by embedded index
for (i = 0; i < sorted.length; i++) {
    console.log(sorted[i].name);
}
票数 0
EN

Stack Overflow用户

发布于 2011-07-14 06:27:56

您可以将所有名称放在一个临时数组中,然后对该数组调用sort()方法。检查此link

问候

票数 0
EN

Stack Overflow用户

发布于 2011-07-14 06:42:54

可以将函数传递给array对象的sort方法,该方法用于确定数组中对象的顺序。默认情况下,它按字母和数字顺序执行此操作,但数字方式有点混乱。下面是我如何解决您的问题,假设您用来对它们进行排序的索引是数字的:

代码语言:javascript
运行
复制
tasks.sort(function(obj1,obj2){
    return obj1.index - obj2.index;
});

如果为object1>object2,则传递给sort方法的函数应返回正整数;如果为object1=object2,则返回0;如果为object1,则返回负整数

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6686365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档