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,596 Responses

  1. I truly love your site.. Pleasant colors & theme.
    Did you develop this site yourself? Please reply back as I’m attempting to
    create my very own website and would love to learn where
    you got this from or what the theme is named. Kudos!

  2. Admiring the time and energy you put into your website and in depth information you present.
    It’s awesome to come across a blog every once in a while that isn’t the same out of date rehashed material.
    Fantastic read! I’ve bookmarked your site and I’m including your RSS feeds to my Google account.

  3. Thanks for sharing your info. I really appreciate your efforts and I will be waiting for your
    next post thank you once again.

    Also visit my web-site :: We buy pasadena homes for cash

  4. Hi there, just wanted to mention, I liked this post.
    It was inspiring. Keep on posting!

  5. Für jede person Schmutz gewappnet: Der Zaco Saugroboter kann nicht nur saugen, damit
    beiliegenden Wassertank ist er innerhalb kürzester Zeit auch ein Wischroboter.
    Das lohnt sich erst recht, wenn du viel Parkett oder Fliesen in der Wohnung hast.
    Per App lässt sich auch der Wasserverbrauch anpassen. Rudimentäre App:
    Beim Zaco V5x hast du die Wahl zwischen Fernbedienung
    und App. Einige Zusatzfunktionen haben im Test nur sporadisch funktioniert
    – die Kernfunktionen klappten problemlos. Der Zaco V5x
    zeigte umso mehr auf glatten Böden eine solide Saugleistung und ist für 1-2 Räume
    absolut empfehlenswert. Mit seiner Laufzeit von 120 Minuten erreichte
    er im Test alle Bereiche des Raumes. Die einfach gehaltene App bietet zusätzlich eine praktische Akkustandanzeige,
    eine Übersicht über die Lebensdauer von Bürsten und HEPA-Filter sowie Einstellungsmöglichkeiten für die Wischfunktion. Auch
    das Saugen unter der Couch war, dank seiner geringen Höhe von 8 cm,
    Machen wir.. Auch beim Wischen behält der Zaco seine niedrige Höhe –
    ein großer Vorteil zu Kombi-Geräten, bei denen der Wassertank aufs Gerät gesetzt wird.

  6. Hey I am so excited I found your weblog, I really found you by error, while I was searching on Digg for something else, Regardless
    I am here now and would just like to say thanks a lot for a fantastic post
    and a all round exciting blog (I also love the theme/design), I don’t have time to look over it all at the minute but I have book-marked it and also added your
    RSS feeds, so when I have time I will be back to read a lot more, Please do keep up the great job.

  7. When I originally left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on every time a comment is added I recieve 4 emails with the same
    comment. Perhaps there is an easy method you can remove me from that service?
    Cheers!

  8. Hey There. I found your blog using msn. This is a really well written article.

    I will be sure to bookmark it and return to read more of
    your useful info. Thanks for the post. I’ll certainly comeback.

  9. I am regular reader, how are you everybody? This paragraph posted at this site is really pleasant.

  10. thanks you sir ♥ bundles of support

  11. webcamera.ru表示:

    Way cool! Some very valid points! I appreciate you writing
    this article and also the rest of the site
    is really good.

  12. It is appropriate time to make some plans for the future and it’s
    time to be happy. I’ve read this post and if I could I desire to suggest you some interesting things or tips.
    Perhaps you could write next articles referring to this article.

    I desire to read even more things about it!

  13. I am truly delighted to glance at this webpage posts which
    consists of tons of useful information, thanks for providing these statistics.

  14. I?m impressed, I must say. Rarely do I come across a blog that?s both equally educative and interesting,
    and let me tell you, you’ve hit the nail on the head.

    The issue is an issue that too few people are speaking intelligently about.
    I’m very happy that I found this during my search for something
    concerning this.

  15. pastelink.net表示:

    Hi to every , since I am really keen of reading this blog’s post to be updated
    daily. It carries good material.

    my web site 스포츠토토사이트 (pastelink.net)

  16. EC Cashrollen表示:

    Einen Eigenbeleg schreiben Sie nun mir nichts, dir nichts mit
    unserem Eigenbeleg-Generator. Kostenlos einen professionellen Eigenbeleg schreiben kann so einfach sein! Das Herunterladen ist
    absolut kostenfrei für Sie und der Eigenbeleg
    enthält keine Werbung! 1. Einstellungen wie z.B.

    Laden Sie den fertig erstellten Eigenbeleg als PDF-Eigenbeleg herunter
    und drucken Sie diesen dann einfach aus. So schreiben Sie Ihre
    Eigenbelege zukünftig noch schneller. Dieser Eigenbeleggenerator
    funktioniert auch auf Tablets und Smartphones. Tipp:
    Speichern Sie die eingegebenen Daten fürt nächste Mal unzertrennlich Cookie!
    Bitte beachten Sie, dass Sie die Eingabemaske ggf.
    seitlich scrollen müssen, um alle Inhalte verändern zu können. Passen Sie die nachfolgenden Felder in unserem Muster-Eigenbeleg an, klicken Sie den Button „PDF- Eigenbeleg jetzt downloaden” und schon ist Ihr Eigenbeleg erstellt.
    Unser Eigenbeleg-Generator speichert die von ihnen eingegebenen Daten niemals auf unserem Server, so ist der Datenschutz zu
    jeder Zeit gewährleistet. Lesen Sie worauf mehr über das Thema „ Eigenbeleg
    schreiben”. Dezimaltrennzeichen Hinweis: die Tausender- und Dezimaltrennzeichen wirken sich
    nur auf den PDF-Beleg aus. Daten im Eigenbeleg speichern? Noch mehr Dokumente schreiben? Sie die
    eingegebenen Daten kostenlos in einem Cookie speichern! Zusätzlich können Sie Ihre Kunden verwalten und Zahlungseingänge
    nachhalten. Testen Sie FirstBill, um professionelle Dokumente mit Logo zu schreiben.
    Ist die Ausgabe tatsächlich beruflich bzw. betrieblich
    bedingt und erscheint die Höhe glaubhaft, wird der Eigenbeleg
    in der Summe vom Finanzamt anerkannt. Nicht ausbleiben keine vorgeschriebene Form des Eigenbeleges, er kann
    gegebenenfalls auch handschriftlich erstellt werden. Ein Eigenbeleg dient als Ersatz für eine nicht ausgestellte
    oder verloren gegangene Quittung oder Rechnung. Sehr viel komfortabler
    und übersichtlicher ist aber in jedem Falle das Ausfüllen via des Eigenbeleg-Generators.
    Grund fürs Ausstellen des Eigenbeleges (z.B. Der Vorsteuerabzug ist bei einem Eigenbeleg grundsätzlich nicht möglich.

    Wir sind stetig bemüht, Ihnen das Schreiben Ihrer Belege mit
    unserem Eigenbelegsgenerator noch einfacher drin. Gemäß § 15 UStG
    ist hierfür eine ordentliche Rechnung notwendig.

    Bitte sagen Sie uns Ihre Meinung!

  17. thermorollen表示:

    Was ist der Unterschied zwischen Kassenrollen, Bonrollen und Thermorollen? Grundsätzlich handelt es sich bei den Begriffen Kassenrollen und Bonrollen um Oberbegriffe und Synonyme für
    Rollen die in Kassen oder Bondruckern Verwendung finden. Bei Thermorollen handelt es sich um
    Spezialrollen, die nur unter Thermodruckern Verwendung finden können. Für Kassen und Drucker
    mit Nadel oder Walzdruckwerk wäre die entsprechenden “Spezialrolle” eine Normalpapierrolle.
    Sie sind auf einer Seite mit einer Schicht überzogen, die unter Wärmeeinwirkung schwarz
    wird zum Beispiel das Druckbild ergibt. Fälschlicherweise hat sich die Bezeichnung Bonrollen jedoch als Synonym für
    eben diese Normalpapierrollen durchgesetzt. Warum sollte man beim Kauf von Kassenrollen auf die Qualität achten? Mit besonders billigen Kassenrollen können verschiedene Probleme auftauchen. Inmitten der Thermorollen kann sich eine mangelhafte
    Papierqualität am schnellen Ausbleichen des Drucks zu hören sein. Kaum feststellbar hingegen sind die im Papier eingesetzten Chemikalien.
    Bei Kassenrollen aus Normalpapier und Thermopapier gleichermassen kann es bei schlechter
    Papierqualität zu verstärkter Staubentwicklung kommen, der sich in Ihrem Drucker oder Ihrer Kasse absetzt per exemplum die Lebensdauer erheblich verkürzen kann.

  18. I’ll immediately take hold of your rss as I can not find your e-mail subscription hyperlink or newsletter service.
    Do you have any? Kindly allow me know in order that I could
    subscribe. Thanks.

  19. Please let me know if you’re looking for a article author for your weblog.
    You have some really good posts and I think I would be a good asset.
    If you ever want to take some of the load off, I’d really like
    to write some articles for your blog in exchange
    for a link back to mine. Please shoot me an email if
    interested. Regards!

  20. discuss表示:

    Tremendous issues here. I am very happy to see your
    article. Thanks a lot and I am looking ahead to touch you.
    Will you please drop me a mail?

  21. Thank you for another wonderful post. Where else may anyone get that type of information in such a perfect means of writing?
    I’ve a presentation subsequent week, and I’m on the search for such
    info.

  22. unsplash.com表示:

    Wow, this post is nice, my sister is analyzing these kinds of things, thus I am
    going to inform her.

  23. Hey There. I found your blog using msn. That is a really well written article.
    I will make sure to bookmark it and return to learn more of your helpful information. Thanks for the post.
    I’ll certainly comeback.

  24. It’s remarkable to go to see this site and reading
    the views of all friends regarding this paragraph, while I am also zealous of getting knowledge.
    combatir el acne

  25. Genuinely no matter if someone doesn’t know then its up to other people that they will help, so here
    it takes place.

  26. For the bet to win, the Giants have to have to shedd by less than six points or win outright.

    Feel feee to surf to my page :: 바카라사이트

  27. telegra.ph表示:

    If some one wants expert view about running a blog then i propose him/her to go to see this
    web site, Keep up the pleasant job.

  28. discuss表示:

    Hey there! This post couldn’t be written any better! Reading this post
    reminds me of my previous room mate! He always kept
    chatting about this. I will forward this post to him.
    Fairly certain he will have a good read. Many thanks for sharing!

  29. What’s Taking place i’m new to this, I stumbled upon this
    I have found It positively helpful and it has aided me out loads.
    I hope to give a contribution & help other users like its aided me.
    Great job.

  30. I’m pretty pleased to discover this page. I need to to thank you
    for ones time due to this wonderful read!! I definitely loved every little bit of it and i also have you
    saved to fav to see new stuff on your website.

發佈留言

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