JS 陣列排序範例

馬老師離開待了約十幾年的教學界,目前在外商科技公司擔任Senior Consultant的工作,原因當然很多,未來有空再慢慢發文章分享,剛好最近有點時間,怕以後忘記,把最近專案中用到的一些程式筆記下來,如果大家有需要,也可以參考使用,這一篇是關於Javascript陣列排序的部分。

通常若有較多的內容需要儲存,變數就沒有陣列來的好用,所以陣列是拿來儲存大量的資料時所使用的,且儲存在裡面的資料,還可以選擇經過排序之後再呈現至畫面上,例如:

var name = ["stanley", "jack", "anita" , "mary"];

name.sort() //依照字母排序
console.log(name); // 輸出 ["anita", "jack", "mary", "stanley"]

names.reverse() //反轉陣列內容
console.log(name); //輸出 ["stanley", "mary", "jack", "anita"]

但若我們同時有多個陣列,但希望以其中之一的內容排序時,也可以同步更新到另外一個陣列,該如何處理呢?可以參考以下的方式:

var name = ["stanley", "jack", "anita" , "mary"];
var gender = ["male" , "male" , "female" , "female"];
var score = [30, 10, 40 , 80];
var ID = ["S1" , "S2" , "S3" , "S4"];

console.log("name : " + name + "; score : " + score + "; gender : " + gender + "; ID : " + ID);
/*
排序前
name : stanley,jack,anita,mary;
score : 30,10,40,80;
gender : male,male,female,female;
ID : S1,S2,S3,S4;
*/

var list = [];
for (var i = 0; i < name.length; i++){
  list.push({
    'name': name[i],
    'score': score[i],
    'gender': gender[i],
    'ID': ID[i]
  });
}

list.sort(function(a, b) {
  return ((a.name < b.name) ? -1 : ((a.name == b.name) ? 0 : 1));
});

for (var i = 0; i < list.length; i++) {
  name[i] = list[i].name;
  score[i] = list[i].score;
  gender[i] = list[i].gender;
  ID[i] = list[i].ID;
}

console.log("name : " + name + "; score : " + score + "; gender : " + gender + "; ID : " + ID);
/*
排序後
name : anita,jack,mary,stanley;
score : 40,10,80,30;
gender : female,male,female,male;
ID : S3,S2,S4,S1;
*/

若是希望按照分數排序,則可以將sort function 修改為下:

//score 由小到大
list.sort(function(a, b) {
  return a.score - b.score
});

//score 由大到小
list.sort(function(a, b) {
  return b.score - a.score
});

補充:

上述的排序內容均以英文和數字為主,若是遇到中文可使用localeCompare進行,而排序的方式是漢語拼音順序,以下為範例:

var arr = ["二","五","四","一","三"];
//漢語拼音:一[yi], 二[er], 三[san], 四[si], 五[wu]
console.log("排序前:" + arr); // 排序前:二,五,四,一,三
arr.sort(function(a,b){
	return a.localeCompare(b, 'zh'); //排序後:二,三,四,五,一
});
console.log("排序後:" + arr); 

var arr = ["中文","英語","法國話", "京片子", "中國"];
//中文[zhong wen], 英語[ying yu], 法國話[fa guo hua], 京片子[jing pian zi], 中國[zhong guo]
console.log("排序前:" + arr); //排序前:中文,英語,法國話,京片子,中國
arr.sort(function(a,b){
	return a.localeCompare(b, 'zh');
});
console.log("排序後:" + arr); //排序後:法國話,京片子,英語,中國,中文


var arr = ["中文","英语","法国话", "京片子", "中国"];
console.log("排序前:" + arr); //排序前:中文,英语,法国话,京片子,中国
arr.sort(function(a,b){
	return a.localeCompare(b, 'zh');
});
console.log("排序後:" + arr); //排序後:法国话,京片子,英语,中国,中文

You may also like...

21,227 Responses

  1. Margarette表示:

    The Most Successful Mental Health Diagnosis Gurus Can Do 3 Things mental health
    diagnosis test uk (Margarette)

  2. Richardfloda表示:

    Московское метро – Население Москвы, Город Москва

  3. JustinTam表示:

    amoxicillin 500 mg online: Amo Health Pharm – where can i buy amoxicillin over the counter uk

  4. Vftyuoilntzef表示:

    Кодирование от алкоголизма в Барнауле в частной клинике «Рехаб22» – это эффективное и анонимное лечение с гарантией результата. rehab-22

  5. Briantrozy表示:

    500 mg doxycycline pill: Dox Health Pharm – doxycycline 100mg tabs

  6. BrandonJag表示:

    buy doxycycline tablets 100mg: DoxHealthPharm – doxycycline 100mg

  7. Roberttic表示:

    https://zithropharm.shop/# zithromax online usa

  8. JustinTam表示:

    zithromax canadian pharmacy: Zithro Pharm – buy zithromax online cheap

  9. Nonetheless a nicely-designed local weather risk insurance can act as a safety internet for international locations whereas improving resilience.

  10. The government as a complete, quite than the Social Security system, will have to repay the treasury bonds that the Social Safety system will be cashing in.

  11. VirgilBlawl表示:

    can i get generic clomid without prescription how can i get clomid no prescription cost generic clomid pills

  12. Jimmy表示:

    What’s The Job Market For Sale Prams Professionals?

    sale prams [Jimmy]

  13. Briantrozy表示:

    amoxicillin 500: price of amoxicillin without insurance – amoxicillin 800 mg price

  14. Roberttic表示:

    https://doxhealthpharm.shop/# doxycycline price australia

  15. BrandonJag表示:

    zithromax 250mg: ZithroPharm – generic zithromax online paypal

  16. Briantrozy表示:

    amoxicillin 500 tablet: Amo Health Pharm – buy amoxicillin 500mg online

  17. BrandonJag表示:

    where buy generic clomid online: can i order cheap clomid prices – where to buy clomid without insurance

  18. VirgilBlawl表示:

    how much is zithromax 250 mg Zithro Pharm zithromax 500 mg lowest price drugstore online

  19. Roberttic表示:

    https://doxhealthpharm.com/# doxycycline 100 mg india

  20. JustinTam表示:

    order doxycycline 100mg: doxycycline 1000mg – cost of doxycycline in india

  21. BrandonJag表示:

    generic zithromax india: zithromax prescription online – buy generic zithromax no prescription

  22. Utiliza el codigo de bonificacion de 1xCasino: “1XBUM” para obtener un bono VIP de hasta €1950 mas 150 giros gratis en el casino y un 200% hasta €130 en apuestas deportivas. Introduce nuestro codigo promocional para 1x Casino 2025 en el formulario de registro y reclama bonos exclusivos para el casino y las apuestas deportivas. Bonificacion sin deposito de 1xCasino de $2420. Es necesario registrarse, confirmar tu correo electronico e ingresar el codigo promocional.

    codigo promocional de 1xbet

  23. MbikolkolTef表示:

    El codigo promocional 1xBet 2025: “1XBUM” brinda a los nuevos usuarios un bono del 100% hasta $130. Ademas, el codigo promocional 1xBet de hoy permite acceder a un atractivo bono de bienvenida en la seccion de casino, que ofrece hasta $2275 USD (o su equivalente en VES) junto con 150 giros gratis. Este codigo debe ser ingresado al momento de registrarse en la plataforma para poder disfrutar del bono de bienvenida, ya sea para apuestas deportivas o para el casino de 1xBet. Los nuevos clientes que se registren utilizando el codigo promocional tendran la oportunidad de beneficiarse de la bonificacion del 100% para sus apuestas deportivas.

    codigo promocional 1xbet casino

  24. Briantrozy表示:

    doxycycline mono: doxycycline online usa – doxycycline 20 mg coupon

  25. Briantrozy表示:

    zithromax: where can you buy zithromax – zithromax 500 mg for sale

  26. pkv games表示:

    Very informative post! There is a lot of information here that can help any business get started with a successful social networking campaign.

發佈回覆給「JustinTam」的留言 取消回覆

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