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...

9,028 Responses

  1. гардина с электроприводом https://provorota.su/ .

  2. rikvip表示:

    This page definitely has all of the information and facts I wanted about this subject and didn’t know who to ask.

  3. индийские карты гадание http://www.indiyskiy-pasyans-online.ru/ .

  4. Dnrttvh表示:

    Привет!
    Приобрести документ университета можно у нас в столице.
    livelib.ru/reader/DiplomMoskva

  5. Treftqn表示:

    Добрый день!
    Полезная информация как купить диплом о высшем образовании без рисков
    amazonebay.ru/profile.php?u=ujava
    Окажем помощь!.

  6. Everything is very open with a clear explanation of the challenges. It was really informative. Your website is very useful. Thank you for sharing!

  7. Mazrkhu表示:

    Добрый день!
    Быстрая схема покупки диплома старого образца: что важно знать?
    scsbm.ru/service-product/him-reagenty-dlja-tamponazhnyh-rastvorov/

  8. Hello there! This article could not be written much better! Going through this post reminds me of my previous roommate! He always kept talking about this. I’ll forward this post to him. Fairly certain he will have a very good read. Thank you for sharing!

  9. plintus_byMn表示:

    Лучшие виды плинтусов для отделки пола, которые подойдут под любой интерьер|Практичные рекомендации по выбору плинтуса для пола, который гармонично впишется в ваш дом|Простая инструкция по установке плинтуса, для быстрого завершения ремонта|Лучшие способы покраски напольных плинтусов, который подчеркнет уникальность вашего интерьера|Какие материалы лучше всего подходят для плинтусов, для обеспечения долговечности|Как сделать плинтус не только функциональным, но и декоративным элементом, для добавления индивидуальности в дом|Какие преимущества имеет использование плинтуса в отделке пола, чтобы понять их ценность|Как поддерживать их первоначальный вид на протяжении долгого времени, чтобы сохранить качество и красоту|Лучшие решения для плинтусов в детской комнате, которые сделают детскую комнату уютной и безопасной|Идеи для сочетания цветов плинтуса с отделкой пола, которые придают помещению индивидуальность и характер|Советы по выбору плинтусов, которые помогут скрыть недостатки пола, для создания иллюзии идеального покрытия|Советы по подбору ярких и нестандартных решений для плинтусов, для придания дерзкости и индивидуальности|Идеи для гармоничного сочетания плинтусов с низкими потолками, для визуального увеличения пространства|Как оформить углы с помощью плинтусов без видимых швов, для создания аккуратных и эстетичных деталей|Идеи для декорирования плинтусов в сочетании с кафелем, которые помогут создать комфорт и стиль в ванной|Как сделать плинтусы незаметными в интерьере
    высокие напольные плинтуса https://plintusnapolnyjshirokij.ru/ .

  10. I really love your website.. Great colors & theme. Did you create this site yourself? Please reply back as I’m looking to create my very own website and want to learn where you got this from or exactly what the theme is named. Cheers.

  11. Lazrlyo表示:

    Добрый день!
    Мы готовы предложить дипломы любой профессии по приятным тарифам.
    telegra.ph/distancionnoe-obuchenie-v-vuzah-rossii-08-02

  12. Ten Lexus Replacement Keys That Really Help You Live Better Lexus Replacement Keys – Nailground79.Werite.Net

  13. The 3 Biggest Disasters In Depression Symptoms And Anxiety History signs of depression in adults

  14. leather Sofa表示:

    10 Startups That’ll Change The Couches Leather Industry For The Better leather Sofa

  15. Yreffxy表示:

    Привет, друзья!
    Приобрести диплом любого университета.
    unifyusnow.org/senate-healthcare-bill-screws-regardless-party/#comment-37856

  16. Diplomi_fsEa表示:

    Здравствуйте!
    Купить документ ВУЗа вы имеете возможность у нас.
    olenka68.blogspot.com/2015/10/blog-post_13

  17. Heidi表示:

    15 Top Twitter Accounts To Learn More About Window Repair
    Milton Keynes glass cutting milton keynes; Heidi,

  18. Dnrtgbs表示:

    Привет, друзья!
    Купить документ о получении высшего образования можно в нашей компании в Москве.
    1wum.ru/forum/?PAGE_NAME=profile_view&UID=37175&MUL_MODE=

  19. mpox pandemic表示:

    Greetings! Very useful advice in this particular post! It’s the little changes that produce the most important changes. Thanks for sharing!

  20. Landrover key表示:

    Landrover Keys Tools To Streamline Your Daily Lifethe One Landrover Keys Trick Every Person Should Learn Landrover key

  21. Cazrnpa表示:

    Привет!
    Мы предлагаем документы техникумов
    tweecampus.com/read-blog/81585

  22. This site was… how do you say it? Relevant!! Finally I’ve found something which helped me. Thanks.

  23. Trefvhs表示:

    Привет!
    Как приобрести аттестат о среднем образовании в Москве и других городах
    139qmb.blogspot.com/2021/05/139qmb_29
    Всегда вам поможем!.

  24. 7 Simple Tricks To Totally You Into Upvc Door Locking Mechanism upvc door Hinges replacement

  25. Mitsubishi Galant Key Replacement Explained In Less Than 140 Characters Automotive Locksmith Near Me

  26. bookmarked!!, I love your web site!

  27. ahn jae hyeon表示:

    Good day! I simply wish to offer you a huge thumbs up for the great info you have right here on this post. I am coming back to your site for more soon.

發佈留言

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