对象中的数字键排序

时间:2015-05-16 10:33:23

标签: javascript

我有一个带键的对象,值是整数:

import pandas as pd
data = pd.DataFrame([[1, 1, 0.5], [1, 1, 0.5], [1, 0, 1], [2, 1, 0.5], [2, 0, 1], 
                     [2, 1, 0.5], [3, 1, 0.5], [3, 0, 1], [3, 1, 0.5]],
                     columns=['a', 'b', 'c'])

我想将此对象排序为

{
  10: 3,
  20: 3,
  30: 3,
  60: 1
}

你有什么解决方案可以解决我的问题吗?

抱歉我的英语不好!

2 个答案:

答案 0 :(得分:3)

  

4.3.3对象   对象是Object类型的成员。它是属于无序集合的属性   包含原始值,对象或函数。存储在对象属性中的函数称为a   方法

请参阅Standard ECMA-262

答案 1 :(得分:0)

我为你准备了一点解决方案。首先将其转换为数组,然后按所需的属性进行排序。

还在打印件中显示对象 {} 与数组 [] 之间的差异。检查小提琴,你有一个带有你对象值的排序数组。

var obj = {
  10: 3,
  20: 3,
  30: 3,
  60: 1
};
var keys = Object.keys(obj);

var arr = [];

for (i = 0; i < keys.length; i++) {
  arr.push({
    val: obj[keys[i]],
    key: keys[i]
  });

}

var ordered = false;

while (!ordered) {
  var i = 0;
  ordered = true;
  for (i = 0; i < arr.length - 1; i++) {
    if (arr[i].val > arr[i + 1].val) {
      var pass = arr[i + 1].val;
      var passkey = arr[i + 1].key;
      arr[i + 1].val = arr[i].val;
      arr[i + 1].key = arr[i].key;
      arr[i].val = pass;
      arr[i].key = passkey;

      ordered = false;
    }

  }

}

var newObj = {};
for (i = 0; i < arr.length; i++) {
  newObj[arr[i].key] = arr[i].val
  console.log("val:" + arr[i].val + ",key:" + arr[i].key);
}

document.write("<p>THE ARRAY:" + JSON.stringify(arr) + "</p>");

document.write("<p>THE OBJECT:" + JSON.stringify(newObj) + "</p>");