如何按值对(关联)数组进行排序?

Pop*_*lII 10 javascript

可能重复:
如何按Javascript中的值对关联数组进行排序?

首先,我知道技术上Javascript没有关联数组,但我不知道如何标题并获得正确的想法.

所以这是我的代码,

var status = new Array();
status['BOB'] = 10
status['TOM'] = 3
status['ROB'] = 22
status['JON'] = 7
Run Code Online (Sandbox Code Playgroud)

而且我想按值对它进行排序,这样当我稍后循环它时,ROB首先是,然后BOB等等.

我试过了,

status.sort()
status.sort(function(a, b){return a[1] - b[1];});
Run Code Online (Sandbox Code Playgroud)

但他们似乎都没有做任何事情.

在阵列之前和之后将阵列打印到控制台导致它以相同的顺序出现.

sam*_*aml 24

数组只能有数字索引.您需要将其重写为Object或Object of Array.

var status = new Object();
status['BOB'] = 10
status['TOM'] = 3
status['ROB'] = 22
status['JON'] = 7
Run Code Online (Sandbox Code Playgroud)

要么

var status = new Array();
status.push({name: 'BOB', val: 10});
status.push({name: 'TOM', val: 3});
status.push({name: 'ROB', val: 22});
status.push({name: 'JON', val: 7});
Run Code Online (Sandbox Code Playgroud)

如果您喜欢该status.push方法,可以使用以下方法对其进行排序:

status.sort(function(a,b) {
    return a.val - b.val;
});
Run Code Online (Sandbox Code Playgroud)