对象是无序的,因为键是基于散列值存储的。所以,没有所谓的排序对象。
但是,您可以简单地根据count 对键进行排序,然后直接在其上应用forEach,就像这样
> Object.keys(dict).sort(function(key1, key2) {
... return dict[key2] - dict[key1];
... }).forEach(function(currentKey) {
... console.log(currentKey, dict[currentKey]);
... });
beta 39
alpha 12
要理解这一点,您可以逐步将对象转换为对数组,如下所示
> var dict = {}
undefined
> dict["alpha"] = 12
12
> dict["beta"] = 39
39
> var temp = Object.keys(dict).map(function(currentKey) {
... return [currentKey, dict[currentKey]];
... });
undefined
> temp
[ [ 'alpha', 12 ],
[ 'beta', 39 ] ]
然后根据第二个元素对它们进行排序,用Array.prototype.sort,像这样
> temp.sort(function(pair1, pair2) {
... return pair2[1] - pair1[1];
... });
[ [ 'beta', 39 ],
[ 'alpha', 12 ] ]
然后按你喜欢的方式打印出来,像这样
> temp.forEach(function(currentPair) {
... console.log(currentPair[0], currentPair[1]);
... })
beta 39
alpha 12
既然要把结果写到文件里,可以这样写
> var fileWriter = require("fs").createWriteStream('Output.txt');
undefined
> Object.keys(dict).sort(function (key1, key2) {
... return dict[key2] - dict[key1];
... }).forEach(function (currentKey) {
... fileWriter.write(currentKey + " " + dict[currentKey] + "\n");
... });
undefined
> fileWriter.end();
undefined
> require("fs").readFileSync("Output.txt").toString()
'beta 39\nalpha 12\n'
您可能需要查看this amazing answer,以更好地了解 JavaScript 中的排序方式。