Javascript - 从对象创建平面排序对象

时间:2014-05-13 13:09:27

标签: javascript arrays sorting object

我有一个数组:

var maxSpeed = {car:300, bike:60, motorbike:200, airplane:1000, helicopter:400, rocket:8*60*60}

我想对它进行排序并转换为FLAT对象,它看起来与上面的数组完全相同。不幸的是,在排序和创建对象后,我得到了多维对象:

var sortable = [];
for (var vehicle in maxSpeed)
      sortable.push([vehicle, maxSpeed[vehicle]])
sortable.sort(function(a, b) {return a[1] - b[1]});


function toObject(sortable) {
  var rv = {};
  for (var i = 0; i < sortable.length; ++i)
    rv[i] = sortable[i];
  return rv;
}

检查console.logs,一个嵌套,另一个不嵌套。我想我必须修改rv [i] = sortable [i]行,但我不知道怎么做?

这就是我现在得到的:

Object
0: Array[2]
1: Array[2]
2: Array[2]
3: Array[2]
4: Array[2]
5: Array[2]
__proto__: Object

我想得到的是什么:

Object
airplane: 1000
bike: 60
car: 300
helicopter: 400
motorbike: 200
rocket: 28800
__proto__: Object

的jsfiddle:

http://jsfiddle.net/Tj39A/

1 个答案:

答案 0 :(得分:0)

您正在寻找的是这样的:

rv[sortable[i][0]] = sortable[i][1];

然而,正如已经指出的那样,物体不能按照你想要的方式分类。