arrays - 在 NodeJS 中按值排序数组

标签 arrays node.js sorting

我正在学习 Node ,现在我正在尝试订购这样的数组:

"lng" : [{
        "ES" : 5,
        "EN" : 3,
        "IT" : 4
    }]

(这是MongoDB中查询结果的一部分),我需要按数字对数组进行排序:

"ES" : 5,
"IT" : 4,      
"EN" : 3

我使用了 sort() 但此函数按第一个参数的字母顺序对数组进行排序,但我需要按第二个参数排序,我尝试了很多方法但没有结果。

感谢您的帮助!

最佳答案

JavaScript 没有有序的对象,所以首先你应该将你的对象转换为这种类型的数组:

[
    { key: "ES", value: 5 },
    { key: "EN", value: 3 },
    { key: "IT", value: 4 }
]

然后按 value 键排序。

您可以按如下方式轻松完成:

// ("mongoDbResult" is the variable with an object you get from MongoDB)
var result = mongoDbResult.lng;

result = Object.keys(result).map(function (key) {
  return { key: key, value: result[key] };
});

然后按 value 键排序:

result.sort(function (a, b) {
  return (a.value < b.value) ? -1 : 1;
});

因此,您应该在 result 变量中得到一个排序数组。

关于arrays - 在 NodeJS 中按值排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28627315/

相关文章:

node.js - 无法启动 Node 服务器,mongodb 数据库有问题吗?

c# - 对文件夹名称数组进行排序,如 Windows 资源管理器(按数字和字母顺序)- VB.NET

c++ - 动态创建指针数组

c++ - 为什么我的注册表读取程序会失败?

node.js - Node.js 中的 'NodeJS' 模块是什么? (问这个是因为很难用谷歌搜索)

java - 字符串基数排序 - StringIndexOutOfBoundsEception

jQuery DataTables 将所有记录显示为选项

javascript - 迭代 boolean 值的二维数组并返回基于 true/false 的递增值

arrays - 使用标准库将 char 转换为 wchar_t?

node.js - Azure函数: IoTHub as Input and Output