2016-02-08 80 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