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,250,393 Responses

  1. discuss表示:

    Every weekend i used to go to see this website, as i want enjoyment, since this this
    web page conations in fact pleasant funny stuff too.

  2. тут表示:

    эпицистостома осложнения

  3. Really excellent visual appeal on this web site, I’d rate it 10.

  4. www.fcc.gov表示:

    Excellent blog here! Also your web site loads up very fast!
    What web host are you using? Can I get your affiliate link to your
    host? I wish my web site loaded up as fast as
    yours lol

  5. I blog frequently and I really thank you for your content.
    This article has really peaked my interest. I’m going to book mark your site and keep checking for new details about once a week.
    I subscribed to your Feed too.

  6. ask.fm表示:

    Quality content is the secret to interest the people to go to see the web page, that’s what this web page is
    providing.

  7. Usually I do not read article on blogs, but I wish to
    say that this write-up very forced me to take a look at and do it!
    Your writing taste has been surprised me. Thank you,
    very nice article.

  8. I visited several blogs except the audio feature for audio songs present at this web page
    is actually fabulous.

  9. firsturl.de表示:

    Greetings from Los angeles! I’m bored to death at work so I decided to check out
    your website on my iphone during lunch break. I enjoy the info you present here and can’t wait to take a
    look when I get home. I’m surprised at how
    fast your blog loaded on my mobile .. I’m not even using WIFI, just 3G ..
    Anyways, amazing site!

  10. kassen rollen表示:

    Bonrollen aus Thermopapier haben leider die Angewohnheit nach einer
    gewissen Zeit auszubleichen. Bei dem von uns vertriebenem Qualitätspapier geben die Hersteller
    bei ordnungsgemäßer Lagerung eine Lesbarkeitsgarantie von 10 Jahren. Insbesondere bei schlechter Papierqualität
    kann man die Schrift teilweise bereits nach wenigen Wochen nicht
    länger lesen. Papier darf nicht mit PVC Weichmachern in Kontakt kommen, z.B.

    Thermopapier darf keinem direkten Sonnenlich ausgesetzt werden.
    Gerade dies in Rechnung gestellt die Haltbarkeit Ihrer eingesetzten Kasse
    oder Ihres Bondruckers macht es Sinn hier ausschließlich auf Qualitätspapier zu setzen: Beim Abreißen oder Schneiden eines Papiers entstehen unweigerlich kleine Mengen Papierstaub.
    Bei Papieren minderer Qualität ist der Papierabrieb größer als bei Qualitäts Bonrollen. Bei EC-Cash Rollen handelt
    es sich um ganz normale Thermorollen mit einer Breite von 57mm.
    Sofern Ihre Kunden einen PIN Code in das EC-Cash Terminal eingeben müssen, können Sie auf den rückseitigen Lastschriftdruck verzichten. Wenn Ihre Kasse oder Ihr Bondrucker nach einem Wechsel der
    Kassenrolle keine Ausdrucke mehr erzeugt und
    höchstens noch weiße Bons ausgibt, dann kann das 2 Ursachen haben. Dies gilt natürlich auch bei Kassenrollen aus Normalpapier.
    Sofern das auszuschließen ist haben Sie die Rolle höchstwahrscheinlich mit die falschen Seite in Ihr Gerät gelegt.
    Die bedruckbare Thermoschicht befinden sich nämlich nur auf einer Seite des
    Thermopapiers. Es handelt sich um einen Thermodrucker der Thermopapier benötigt und Sie
    haben eine Normalpapierrolle eingelegt. Kommen zu jedoch einige
    wenige Geräte bei denen die Wicklung bzw. die Thermoschicht
    innen sein muß. Bei Thermorollen befindet sich typischerweise die Thermoschicht, also die
    bedruckbare Seite des Papiers außen. Diese Rollen sind von uns extra
    gekennzeichnet.

  11. Superb, what a blog it is! This website provides useful data to
    us, keep it up.

  12. You should be a part of a contest for one of the highest quality
    websites on the net. I most certainly will
    highly recommend this blog!

  13. www.1xg.net表示:

    hello there and thank you for your info – I’ve certainly picked up something
    new from right here. I did however expertise a few technical issues using this site,
    since I experienced to reload the web site many times previous to I could get it to load correctly.

    I had been wondering if your web hosting is OK? Not that I am complaining,
    but slow loading instances times will often affect your placement in google and can damage your high quality score if ads and marketing with Adwords.
    Anyway I’m adding this RSS to my e-mail and can look out for much more of your respective intriguing content.
    Ensure that you update this again very soon.

  14. Remarkable issues here. I’m very glad to see your article.

    Thank you a lot and I am having a look ahead to contact you.
    Will you kindly drop me a e-mail?

  15. Thank you for every other informative website. Where else may just
    I get that kind of info written in such a perfect means?
    I have a challenge that I’m just now working on, and I have been at the look out for such info.

  16. Hello, i think that i saw you visited my web site so i came to
    ?return the favor?.I’m attempting to find things to improve my web site!I suppose its ok to
    use some of your ideas!!

  17. I conceive this website has very excellent pent content blog
    posts.

  18. I’m curious to find out what blog platform you happen to be using?
    I’m experiencing some small security issues with my latest website and
    I’d like to find something more safe. Do you have any suggestions?

  19. Howdy! I just would like to offer you a big thumbs up for your great information you have here on this post.
    I will be returning to your blog for more soon.

  20. Just wanna comment that you have a very nice site, I
    the layout it actually stands out.

  21. What a data of un-ambiguity and preserveness of valuable knowledge
    about unexpected emotions.

  22. lovely review. In addition visit my site to comprehend slot
    deposit pulsa tanpa potongan. This excellent amazing web page has received fascination by using slot online pulsa betting competitors
    in Indonesia. Truth be told there will be a few handy promos when you join at this time.

  23. thermopapier表示:

    Benötige ich Thermo-Bonrollen oder Bonrollen aus Normalpapier?
    Das Druckbild wird durch Wärme / Hitze erzeugt, nicht durch Farbe.

    Thermobonrollen benötigen Sie, wenn in Ihrem Gerät ein Thermodrucker verbaut ist.
    Am besten Sie informieren sich auf der Herstellerseite Ihres Gerätes welcher Drucker verbaut.

    Bonrollen aus Normalpapier (sog. Additionsrollen) werden dagegen benötigt, wenn Ihr Drucker mit Farbe druckt (z.B.
    Gerne können Sie auch Kontakt zu uns aufnehmen. Wir innehaben eine umfassende Datenbank über alle handelsüblichen Geräte und beraten Sie
    gerne. Wenn Sie eine passende Bon Rolle vorliegen haben und nur nachbestellen möchten, dann
    können Sie den „Kratz-Test” durchführen. Dort werden Sie in 80% der Fälle fündig. Wenn sich auf dieser Stelle dunkle Kratzspuren bilden, dann benötigen Sie Thermobonrollen (durch die Reibung entsteht Wärme, welches das Papier verfärbt). Reiben Sie dazu Ihren Fingernagel mit leichtem bis mittelstarken Druck aufm Papier. Gibt es umweltfreundliche Bonrollen? Die umweltfreundlichen Bonrollen aus BLUE4EST Thermopapier werden komplett ohne chemische Farbentwickler hergestellt und können deshalb auch im Altpapier entsorgt werden.

  24. really interesting review. Likewise visit one of the best site
    to enjoy slot online pulsa. This kind of internet
    site has received track record originating from video slot
    wagering participants in Indonesia. Right now there tend to be many beautiful promos in case you
    join at this point.

  25. For latest information you have to visit world-wide-web and on the web I found this site as a finest site for latest updates.

  26. Excellent blog post. I absolutely love this site. Keep writing!

  27. After looking over a few of the blog articles on your
    website, I honestly appreciate your technique of writing a blog.
    I book-marked it to my bookmark website list and will be checking back soon. Please visit my web site
    as well and let me know your opinion.

  28. hello there and thank you for your information – I have certainly picked
    up anything new from right here. I did however
    expertise some technical points using this web site, since I experienced to reload the site lots of times previous
    to I could get it to load properly. I had been wondering if your web hosting
    is OK? Not that I am complaining, but sluggish loading instances times will often affect your placement in google and can damage your high-quality score if advertising and marketing with Adwords.
    Anyway I’m adding this RSS to my e-mail and could look out for a lot more of your
    respective intriguing content. Ensure that you update this again soon.

  29. Caridad表示:

    Hello colleagues, how is everything, and what you would like to
    say about this article, in my view its truly awesome for me.

發佈留言

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