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

  1. The other day, while I was at work, my cousin stole my apple ipad and tested to see if it
    can survive a forty foot drop, just so she can be a youtube sensation. My apple ipad is now destroyed
    and she has 83 views. I know this is entirely off topic but I had
    to share it with someone!

  2. Hey there! Someone in my Myspace group shared this site with us so I came to give it a
    look. I’m definitely enjoying the information. I’m
    bookmarking and will be tweeting this to my followers!
    Terrific blog and outstanding style and design.

  3. Good information. Lucky me I recently found your site by chance (stumbleupon).
    I have saved it for later!

  4. funsilo.date表示:

    Hi every one, here every one is sharing these kinds of knowledge, therefore it’s fastidious to
    read this webpage, and I used to visit this web site daily.

  5. Thank you for sharing with us, I think this website really stands
    out :D.

  6. bdproshno.com表示:

    Thanks for sharing such a good opinion, piece of writing is fastidious, thats why i
    have read it completely

  7. Fantastic goods from you, man. I have be aware your stuff prior to and you are simply too magnificent.
    I actually like what you’ve received here, certainly like what you’re stating and
    the way during which you assert it. You make it enjoyable and you still care for to keep it smart.
    I can’t wait to read much more from you. This is actually a wonderful site.

  8. I am not positive where you’re getting your information, but good topic.

    I needs to spend a while finding out much more or working out more.
    Thank you for excellent info I used to be in search of this info for my mission.

  9. Hi! I’ve been following your website for a while now and finally got the courage to go ahead and
    give you a shout out from Houston Texas! Just wanted to tell
    you keep up the excellent job!

  10. A motivating discussion is definitely worth comment. There’s no doubt that that you need to publish more on this
    subject matter, it might not be a taboo subject but usually people don’t talk about these issues.
    To the next! Many thanks!!

  11. Appreciation to my father who told me regarding this website, this weblog is
    actually awesome.

  12. This text is worth everyone’s attention. Where can I find out more?

  13. parislnwslot表示:

    Hi there, just wanted to mention, I liked this blog post.

    It was funny. Keep on posting!

  14. Metalean Diet表示:

    Enjoyed reading this, very good stuff, appreciate it.

  15. Good day I am so thrilled I found your webpage, I really found you by error, while I was searching
    on Bing for something else, Nonetheless I
    am here now and would just like to say kudos for a fantastic
    post and a all round entertaining blog (I also love the theme/design), I don’t have time to look over it all
    at the moment but I have saved it and also included
    your RSS feeds, so when I have time I will be back to read a lot
    more, Please do keep up the excellent b.

  16. I am actually happy to glance at this weblog
    posts which contains plenty of valuable facts,
    thanks for providing these statistics.

  17. I like the valuable info you provide in your articles. I will bookmark your blog and check again here regularly.
    I am quite sure I’ll learn lots of new stuff right here!
    Best of luck for the next!

  18. 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
    in nicht allzu ferner zukunft noch schneller. Dieser Eigenbeleggenerator funktioniert
    auch auf Tablets und Smartphones. Tipp: Speichern Sie die eingegebenen Daten für das nächste Mal atomar 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 nachfolgend 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 etwas 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 grundsätzlich vom Finanzamt anerkannt.
    Entstehen 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 unter Zuhilfenahme von des Eigenbeleg-Generators.
    Grund fürs Ausstellen des Eigenbeleges (z.B. Der Vorsteuerabzug ist bei einem Eigenbeleg grundsätzlich undenkbar.

    Wir sind stetig bemüht, Ihnen das Schreiben Ihrer Belege mit unserem
    Eigenbelegsgenerator noch einfacher leistbar.
    Gemäß § 15 UStG ist hierfür eine ordentliche Rechnung notwendig.
    Bitte sagen Sie uns Ihre Meinung!

  19. Hey there! I just wanted to ask if you ever have any trouble with hackers?
    My last blog (wordpress) was hacked and I ended up losing several
    weeks of hard work due to no back up. Do you have any solutions to protect against hackers?

  20. Everything is very open with a precise explanation of the issues.
    It was really informative. Your website is very helpful.
    Many thanks for sharing!

  21. It’s really a cool and helpful piece of information.
    I am glad that you shared this useful info with us. Please
    keep us informed like this. Thank you for sharing.

  22. kassenrollen表示:

    EC Cashrollen, auch Kreditkartenrollen oder Terminalrollen genannt, haben einen rückseitigen Lastschriftaufdruck.
    Hiermit ermächtige ich das umseitig ausgewiesene Unternehmen den umseitig ausgewiesenen Rechnungsbetrag von meinen umseitig
    durch Konto-Nummer und Bankleitzahl bezeichneten Konto durch Lastschrift einzuziehen.
    Ich weise mein Kreditinstitut, das durch die umseitig angegebene Bankleitzahl bezeichnet ist, unwiderruflich an, bei
    Nichteinlösung der Lastschrift oder bei Widerspruch gegen die
    Lastschrift des umseitig ausgewiesenen Unternehmen oder einem
    von seiner Seite aus beauftragten Dritten auf dessen Anforderung hin meinen Namen und meine Anschrift vollständig mitzuteilen, damit das
    umseitig ausgewiesene Unternehmen seinen Anspruch gegen mich geltend machen kann.

    Ich bin damit einverstanden, daß meine Daten für den Zweck der Zahlungsabwicklung elektronisch gespeichert
    und verarbeitet werden. Ich bin damit einverstanden, daß nur im Falle
    der Nichteinlösung diese Tatsache in eine Sperrdatei aufgenommen und an andere Unternehmen zur
    Nutzung übermittelt wird, die ebenfalls ein solches Lastschriftverfahren anwenden. Sobald der Forderungsbetrag bezahlt ist, wird die Eintragung in der Sperrdatei gelöscht.

  23. anotepad.com表示:

    Hi there, just became aware of your blog through Google, and found that it is really
    informative. I’m gonna watch out for brussels. I will appreciate if you continue this
    in future. Numerous people will be benefited from your writing.
    Cheers!

  24. Hey there would you mind letting me know which hosting company you’re using?
    I’ve loaded your blog in 3 different browsers and I must say this blog
    loads a lot faster then most. Can you suggest a good web hosting provider at a honest price?
    Thanks, I appreciate it!

  25. You could definitely see your skills in the work you write.

    The world hopes for even more passionate writers such as you
    who aren’t afraid to say how they believe. All the time go
    after your heart.

  26. Ursula表示:

    Hi, just wanted to mention, I loved this blog post.

    It was helpful. Keep on posting!

  27. Maricruz表示:

    What’s up, its nice article on the topic of media print, we all
    be familiar with media is a great source of data.

  28. Pretty section of content. I just stumbled upon your weblog and in accession capital to assert that
    I acquire in fact enjoyed account your blog posts. Anyway I will be subscribing
    to your feeds and even I achievement you access consistently quickly.

  29. An outstanding share! I have just forwarded this onto a
    coworker who has been conducting a little homework on this.
    And he in fact ordered me dinner because I stumbled upon it for him…
    lol. So allow me to reword this…. Thanks for the meal!!
    But yeah, thanks for spending time to discuss this subject here on your blog.

  30. Wow, superb weblog layout! How lengthy have you been running a
    blog for? you made blogging look easy. The overall glance of your web site is excellent, as well as the content material!

    Have a look at my web site sell house fast

發佈留言

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