Javascript 如何按数字的升序对对象数组进行排序?

Javascript 如何按数字的升序对对象数组进行排序?,javascript,jquery,Javascript,Jquery,我有一个对象数组,如下所示: var array = { "112" : { "id": "3", "name": "raj" }, "334" : { "id": "2", "name": "john" }, "222" : { "id": "5", "name": "kelvin" } }

我有一个对象数组,如下所示:

var array = {
    "112" : {
             "id": "3",
             "name": "raj"
    },
    "334" : {
             "id": "2",
             "name": "john"
    },
    "222" : {
             "id": "5",
             "name": "kelvin"
    }
}

现在,我想按
id
的升序对数组进行排序,然后在数组中恢复它。我试着使用
sort()
,但没有成功。请帮助我如何在显示数组中的数据时对其进行排序。

这不是数组,而是对象(如果不是语法错误(
=
应该是
))。它没有订单

可以改用数组(使当前属性名成为子对象上的键的值)


或者,您可以使用
for
循环来构建键名称数组,然后对其进行排序,并将其用作按顺序访问对象的基础。

这是一个对象,但您可以对数组进行排序,如下所示:

工作演示:

希望这有帮助,

代码

   function sortAscending(data_A, data_B)
{
    return (data_A - data_B);
}
var array =[ 9, 10, 21, 46, 19, 11]
array.sort(sortAscending) 
alert(array);​

JavaScript对象按定义是无序的。语言规范甚至不能保证,如果你连续两次迭代一个对象的属性,第二次它们将以相同的顺序出现


如果需要排序,请使用数组和
array.prototype.sort
方法。

假设您的代码是对象数组,即:

var unsortedArray = [
    { id: 3, name: "raj" },
    { id: 2, name: "john" },
    { id: 5, name: "kelvin" } 
];
然后,通过将一个函数传递给Array.sort()来比较id,您就可以按id进行排序:

var sortedArray = unsortedArray.sort(function(a, b) {
    return a.id - b.id 
});

正如其他人所指出的,您拥有的是一个包含对象的对象,而不是数组。

没有多少人知道
array.sort
可以用于其他类型的对象,但它们必须具有长度属性:

array.length = 334;
Array.prototype.sort.call(array, function(a, b) {return a.id - b.id;});

不幸的是,如果你的“数组”中充满了像你一样的“漏洞”,那么这就不能很好地工作。

看看这个很棒的网站:你的代码中有语法错误,请修复它们
112=
应该是
122:
,whyle
raj
和其他应该是字符串,除非它们是变量,但我想它们不是。这是对象的对象,而不是对象的数组。
var array = {
    "112" : {
         "id": "3",
         "name": "raj"
    },
    "334" : {
         "id": "2",
         "name": "john"
    },
    "222" : {
         "id": "5",
         "name": "kelvin"
    }
}
var sortedObject = Array.prototype.sort.apply(array);

result:
{
    "112": {
        "id": "3",
        "name": "raj"
    },
    "222": {
        "id": "5",
        "name": "kelvin"
        },
    "334": {
        "id": "2",
        "name": "john"
    }
}