繁体   English   中英

对对象中的数字键进行排序

[英]Sort numeric keys in object

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

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

我想将此对象排序为

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

您有解决我问题的解决方案吗?

对不起,我的英语不好!

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

参见标准ECMA-262

我为您准备了一些解决方案。 首先将其转换为数组,然后根据所需属性进行排序。

还显示了对象{}与数组[]之间的区别。 检查小提琴,您有一个带有对象值的排序数组。

 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>"); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM