การเรียงลำดับรองบนไอโซโทปเป็นไปได้หรือไม่

ฉันได้ใช้รหัสการเรียงลำดับที่คิดออกหมดแล้ว และมันก็ทำงานได้อย่างที่คาดไว้ ฉันชอบตัวเลือกตัวกรองรอง

ฉันมีซีรีส์เช่น:

<div id="member1" class="sortItem" data-factor="2">
    <span class="name">Jobs</span>
</div>
<div id="member2" class="sortItem" data-factor="2">
    <span class="name">Wayne</span>
</div>
<div id="member3" class="sortItem" data-factor="3">
    <span class="name">Wozniak</span>
</div>

ดังนั้นหากฉันเรียงลำดับตาม data-factor ฉันจะได้ (ตัวย่อ):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Wayne           2
Jobs            2

แต่สิ่งที่ฉันต้องการคือการเรียงลำดับรองให้เรียงตามตัวอักษรเสมอเช่น:

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Wozniak         3
Jobs            2
Wayne           2

และการเรียงลำดับแบบย้อนกลับบน data-factor (คลิกปุ่มเรียงลำดับอีกครั้ง):

+-------------+-------------+
   NAME           FACTOR
+-------------+-------------+
Jobs            2
Wayne           2
Wozniak         3

มีแนวคิดใดบ้างเกี่ยวกับวิธีใช้การเรียงลำดับที่สอง

ไชโย!


person roberthuttinger    schedule 08.02.2013    source แหล่งที่มา


คำตอบ (2)


วิธีการเรียงลำดับเพียงส่งคืนสตริงหรือตัวเลขที่จะเรียงลำดับตามตัวอักษรหรือตัวเลข

หากคุณต้องการรวมทั้งสอง ตัวส่วนร่วมที่ต่ำที่สุดคือสตริง

ปัญหาเดียวที่เหลืออยู่คือวิธีทำให้ตัวเลขเรียงลำดับตามตัวอักษร คุณสามารถทำได้โดยเพิ่มเลข 0 นำหน้าเพื่อปัดพวกมันออก คุณอาจต้องใช้ตัวเลข 1, 2 หรือ 3 หลัก ขึ้นอยู่กับขนาดของคอลเลกชันของคุณ

e.g.

สำหรับตัวเลข 3 หลัก (มากถึง 1,000 องค์ประกอบ) ปุ่มเรียงลำดับของคุณจะกลายเป็นดังนี้:

003Wozniak
002Jobs
002Wayne

ซึ่งจะเรียงลำดับตามที่คุณต้องการ

person Gone Coding    schedule 16.05.2013
comment
คำตอบที่ง่ายที่สุดคือต่อหน้าต่อตา...นี่คือปัญหาป่าทะลุต้นไม้ ทุกอย่างเรียงลำดับแบบนี้ ขอบคุณสำหรับโซลูชันที่หรูหราแต่เรียบง่าย ฉันคิดมากเกี่ยวกับปัญหา - person roberthuttinger; 16.05.2013
comment
วิธีแก้ปัญหาที่ได้รับความนิยมมากที่สุดมักจะเป็นการตัดไม้ทั้งหมดแล้วไปจากที่นั่น :) - person Gone Coding; 17.05.2013

จริงๆ แล้ว คุณสามารถจัดเรียงตามหลายสิ่งได้ ลองดูตัวอย่าง getSortData บนเว็บไซต์ไอโซโทป ...

getSortData: {
    sort1: function($elem) {
        return parseInt($elem.attr('data-category-sort1'), 10);
    },
    bywidth: function($elem) {
        return $elem.width();
    },
    byname: function($elem) {
        return $elem.find('.name').text();
    }
    // more...
}
person guideX    schedule 21.11.2013