JS 依照元素出現數量排序

同樣是最近遇到的狀況,需要利用陣列內元素出現的數量進行排序,以下為範例程式:

var array = ["1", "2", "4", "5", "2", "4", "2", "3"];
var str = array.toString();
var filter = [];
var result = [];
document.write("原始陣列:" + array + "<br>");

var get = function (str, tar, arr, tmp) {
    if (str.indexOf(tar) >= 0) {
        tmp = str.slice(str.indexOf(tar) + 1);
        arr.push(tar);
        get(tmp, tar, arr, tmp);
    }
    return arr;
}

for (i in array) {
    var elm = [];
    var tmp;
    var fstr = filter.join();
    if (fstr.indexOf(array[i]) >= 0) {
        continue;
    } else {
        var tmp_arr = get(str, array[i], elm, tmp);
        result.push(tmp_arr.length + ':' + tmp_arr[0]);
        filter.push(array[i]);
    }
}

result.sort();
result.reverse();

//按照出現次數排序,不刪除重複元素
var finishArray = [];

for (index in result) {
    var show = result[index].split(':');
    for (i = 0; i < show[0]; i++) {
        finishArray.push(show[1]);
    }
}
document.write("按出現次數排序,不刪除重複元素:" + finishArray + "<br>");

//按照出現次數排序,刪除重複元素
var finishArray = [];
for (index in result) {
    var show = result[index].split(':');
    finishArray.push(show[1]);
}
document.write("按出現次數排序,刪除重複元素:" + finishArray + "<br>");

輸出結果:

原始陣列:1,2,4,5,2,4,2,3
按出現次數排序,不刪除重複元素:2,2,2,4,4,5,3,1
按出現次數排序,刪除重複元素:2,4,5,3,1

You may also like...

1,248,777 Responses

  1. Ivoryvioth表示:

    * **Рекомендации знакомых:** Спросите у своих друзей, родственников или соседей, кто им помогал с вентиляцией.
    * **Проверка наличия тяги:** Поднесите к вентиляционному отверстию лист бумаги или зажженную спичку. Если бумага отклоняется от вентиляционного канала, значит, тяга есть.

    stroysfera21.ru

  2. Archie Holl表示:

    buying land in florida

  3. DarrenUnjuh表示:

    https://plavixclo.com/# generic plavix

  4. Theron Corsey表示:

    many have own preference for buying penthouse

  5. BrandenSlomy表示:

    can i buy clomid without insurance: clomid purchase online rex pharm – where can i get cheap clomid without insurance

  6. Wonderful work! That is the kind of information that should be shared
    across the internet. Disgrace on the search engines for
    no longer positioning this post upper! Come on over and discuss with
    my website . Thanks =)

  7. BernardMop表示:

    Lisinopril 1st buy Lisinopril online buy Lisinopril 1st

  8. Drug prescribing information. Cautions.
    how to buy lisinopril tablets
    Best trends of medicament. Get here.

  9. bonekslot表示:

    situs kasino online terpercaya saat ini bonekslot. Buruan daftar dan ditunggu withdrawnya

  10. AlbertDuM表示:

    ivermectin 3mg for lice: minocycline 50 mg para que sirve – minocycline 50 mg tablets for human

  11. BernardMop表示:

    cheapest Lisinopril zestril 10 mg price in india buy Lisinopril online

  12. Here are so many amazing promotions! It’s good to see reputable casinos offering these deals. evaluating Finland’s bonus promotion legislation has more exciting content

  13. BernardMop表示:

    Misoprostol 200 mg buy online cytpremium buy cytotec pills

  14. Olin Manders表示:

    bentong land for rent

  15. Предлагаем услуги профессиональных инженеров офицальной мастерской.
    Еслли вы искали сервисный центр lg, можете посмотреть на сайте: официальный сервисный центр lg
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  16. BrandenSlomy表示:

    cheap clomid now: cheap clomid – cost of clomid without a prescription

  17. DarrenUnjuh表示:

    https://lisinopril1st.com/# lisinopril1st

  18. BernardMop表示:

    buy cytotec pills cyt premium cytotec buy online usa

  19. Ute Hatridge表示:

    many way to consider when buying penthouse

  20. Предлагаем услуги профессиональных инженеров офицальной мастерской.
    Еслли вы искали сервисный центр lg в москве, можете посмотреть на сайте: сервисный центр lg в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  21. Tremendous issues here. I am very satisfied to look your post.
    Thank you so much and I’m having a look ahead to touch
    you. Will you please drop me a mail?

  22. BrandenSlomy表示:

    prednisone oral: order Prednisone – prednisone 20

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。