2016-02-08 45 views
-1

我使用以下代码创建每个单词的对象(单词单词阵列),并检查每个单词的出现次数,并将其与每个对象一起存储。按出现次序排列对象

var wordOccurrences = { }; 
for (var i = 0, j = wordsArray.length; i < j; i++) { 
     wordOccurrences[wordsArray[i]] = (wordOccurrences[wordsArray[i]] || 0) + 1; 
} 
console.log(wordOccurrences); 

此输出:

Object { hello: 1, world!: 2, click: 1, here: 1, goodbye: 1 } 

我将不胜感激,如果有人可以帮助我,例如,通过它们的出现排序的对象升序或降序。我尝试了几种方法,但都没有取得正确的结果。

所需的输出会是这样的:

world! 2 
hello 1 
click 1 
here 1 
goodbye 1 
+2

[按属性值排序JavaScript对象(http://stackoverflow.com/questions/1069666/sorting-javascript-object-by-property-value)的可能的复制 – Itay

回答

1

尝试以下方法:

var wordOccurences = { "hello": 1, "world!": 2, "click": 1, "here": 1, "goodbye": 1 } 
var sortable = []; 
for (var word in wordOccurences) 
     sortable.push([word, wordOccurences[word]]) 
sortable.sort(function(a, b) {return a[1] - b[1]}).reverse() 
var result = {} 
for(var i = 0; i < sortable.length; i++){ 
result[sortable[i][0]] = sortable[i][1] 
} 

的console.log(结果);

+0

我已经接受你的答案(正如你已经帮助过的),即使我在发布问题后3分钟回复它:p无论如何感谢 – NewToCoding

+1

@NewToCoding哈哈很高兴(帮助)! –

1

只需要一个数组的键和排序它。

var wordOccurrences = { hello: 1, 'world!': 2, click: 1, here: 1, goodbye: 1 }, 
 
    words = Object.keys(wordOccurrences).sort(function (a, b) { 
 
     return wordOccurrences[b] - wordOccurrences[a] || a.localeCompare(b); 
 
    }); 
 

 
document.write(words.map(function (a) { 
 
    return a + ': ' + wordOccurrences[a]; 
 
}).join('<br>'));

+0

我自己解决了这个问题,但会为你提供帮助。谢谢 :) – NewToCoding