2016-05-13 75 views
-2

我想刪除所有重複的項目數組中,並從多到少從陣列中刪除重複項和順序進行排列在javascript

["57358e5dbd2f8b960aecfa8c", 
"573163a52abda310151e5791", 
"573163a52abda310151e5791", 
"573163a52abda310151e5791", 
"573163a52abda310151e5791", 
"573163da2abda310151e5792", 
"57358e5dbd2f8b960aecfa8c", 
"57358e5dbd2f8b960aecfa8c" 
"573163da2abda310151e5792",] 

我想這樣

中出現的順序安排他們
["573163a52abda310151e5791", 
"57358e5dbd2f8b960aecfa8c", 
"573163da2abda310151e5792"] 

如一日一個出現在最沒有時間,那麼第二個,然後第三其中一個apears只有一次

+0

我能夠刪除重複但無法安排它們 – learner

+1

給出代碼示例。並更準確地告訴你需要什麼(提供你需要的結果類型) – xAqweRx

+0

什麼是「按照從大到小的順序排列」?在什麼情況下? –

回答

0

當然有一百萬個不同approache S,而是一個相當簡單的方法是首先計算不同的項目的出現,然後根據該唯一值進行排序:

var input = [ 
    "57358e5dbd2f8b960aecfa8c", 
    "573163a52abda310151e5791", 
    "573163a52abda310151e5791", 
    "573163a52abda310151e5791", 
    "573163a52abda310151e5791", 
    "573163da2abda310151e5792", 
    "57358e5dbd2f8b960aecfa8c", 
    "57358e5dbd2f8b960aecfa8c", 
    "573163da2abda310151e5792" 
]; 

var count = {}; 
input.forEach(function(item) { 
    if(count.hasOwnProperty(item)) count[item]++; 
    else count[item] = 1; 
}); 

var output = Object.keys(count).sort(function(left, right) { 
    if(count[left] < count[right]) return 1; 
    if(count[left] > count[right]) return -1; 
    return 0; 
}); 
0

您可以鍵值對的數組(鍵,occurances) ,像這樣:

var arr = []; 

for (var i = 0; i < myArray.length; i++) { 
    if (arr.indexOf(myArray[i]) > -1) { 
     // It occured before, search the key-value pair 
     // and increment the occurance 
     arr.indexOf(myArray[i])[1]++; 
    } else { 
     // Add to our array 
     arr.push({myArray[i], 1}); 
    } 
} 

function compare(a, b) { 
    if (a[1] < b[1]) return -1; 
    else if (a[1] > b[1]) return 1; 
    else return 0; 
} 

arr.sort(compare); 

這樣的話,你有完全控制您的排序算法,並有occurances的確切數量,因爲額外的獎勵!希望這可以幫助。