[英]Descending order object based on keys
I am using some API and they return json in following format , problem is they send keys as floating number.I cannot modify their backend part to make proper json.So I am looking for quickfix to show following data in descending order.我正在使用一些 API,它们以以下格式返回 json,问题是它们将键作为浮点数发送。我无法修改它们的后端部分以制作正确的 json。所以我正在寻找 quickfix 以降序显示以下数据。
220: {CE: {…}, PE: {…}}
225: {CE: {…}, PE: {…}}
230: {CE: {…}, PE: {…}}
235.23: {CE: {…}, PE: {…}}
240.32: {CE: {…}, PE: {…}}
245: {CE: {…}, PE: {…}}
250: {CE: {…}, PE: {…}}
255.12: {CE: {…}, PE: {…}}
I want to reverse it in descending order , I was trying to figure out how to do it for past 3 hours.我想按降序反转它,我试图弄清楚过去 3 个小时如何做到这一点。
I tried following code我试过以下代码
function reverseObject(object) {
var newObject = {};
var keys = [];
for (var key in object) {
keys.push(key);
}
for (var i = keys.length - 1; i >= 0; i--) {
var value = object[keys[i]];
newObject[keys[i]]= value;
}
return newObject;
}
This will create an array of tuples [['255.12', {CE: {…}, PE: {…}}],['250', {CE: {…}, PE: {…}}], …]
using Object.entries()
and Array.prototype.sort()
:这将创建一个元组数组[['255.12', {CE: {…}, PE: {…}}],['250', {CE: {…}, PE: {…}}], …]
使用Object.entries()
和Array.prototype.sort()
:
function entriesDescending (object) {
return Object
.entries(object)
.sort(([a], [b]) => b - a)
}
const response = { 220: {CE: 'foo', PE: 'bar'}, 225: {CE: 'foo', PE: 'bar'}, 230: {CE: 'foo', PE: 'bar'}, 235.23: {CE: 'foo', PE: 'bar'}, 240.32: {CE: 'foo', PE: 'bar'}, 245: {CE: 'foo', PE: 'bar'}, 250: {CE: 'foo', PE: 'bar'}, 255.12: {CE: 'foo', PE: 'foo'}, } const fromEntries = (acc, [key, value]) => ({...acc, [key]: value}) const byNumberKey = ([a], [b]) => a - b const sortKeys = obj => Object.entries(obj) .sort(byNumberKey) .reduce(fromEntries, {}) console.log( sortKeys(response) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.