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

  1. Michaelfug表示:

    Al-Ittihad https://saudi.al-ittihad-ar.com is one of the most famous football clubs in Saudi Arabia. Founded in 1927, the Saudi football giant has come a long way to the pinnacle of success.

  2. BrianMex表示:

    Al-Nasr https://saudi.al-nassr-ar.com is one of the most famous football teams in the Kingdom of Saudi Arabia.

  3. FrankTog表示:

    Luis Suarez https://inter-miami.luis-suarez-ar.com the famous Uruguayan footballer, ended his brilliant career in European clubs and decided to try his hand at a new challenge – Major League Soccer.

  4. wedding dress表示:

    Hi there! This blog post couldn’t be written any better! Going through this article reminds me of my previous roommate! He constantly kept preaching about this. I will send this information to him. Fairly certain he’s going to have a very good read. Thanks for sharing!

  5. Diplomi_krEa表示:

    Привет!
    Купить документ о получении высшего образования можно у нас.
    diploms-x.com/kupit-diplom-perm 

  6. Diplomi_vrEa表示:

    купить диплом юридический в уфе diploms-x.com .

  7. Sazrzbs表示:

    Здравствуйте!
    Пошаговая инструкция по безопасной покупке диплома о высшем образовании
    abs70.ru/member.php?u=1918
    Рады оказать помощь!

  8. Spot on with this write-up, I seriously believe that this website needs much more attention. I’ll probably be returning to see more, thanks for the info.

  9. Larryhef表示:

    подъемник мачтовый грузовой пмг https://podemniki-gruzovye.ru

  10. Great post! We are linking to this particularly great post on our website. Keep up the great writing.

  11. Oscar Reys表示:

    10 Sites To Help You To Become An Expert In Akun Demo Gratis Oscar Reys

  12. Victordieli表示:

    Bayern Munich’s https://bayern.jamal-musiala-ar.com young midfielder, Jamal Musiala, has become one of the brightest talents in European football.

  13. DavidZib表示:

    Thibaut Courtois https://real-madrid.thibaut-courtois-ar.com was born on May 11, 1992 in Belgium.

  14. RobertElund表示:

    Ирина Волк: расследование уголовного дела пирамиды Life is Good завершено
    русский анальный секс
    Официальный представитель МВД России Ирина Волк сообщила об окончании предварительного расследования уголовного дела Life is Good. Материалы с утвержденным обвинительным заключением в отношении десяти человек направлены в Приморский районный суд Санкт-Петербурга для рассмотрения по существу. Они обвиняются в организации деятельности по привлечению денежных средств и мошенничестве, совершенных в особо крупном размере в составе преступного сообщества. Всего, по версии следствия, в состав криминальной организации входили 35 соучастников. Потерпевшими по уголовному делу признаны 221 человек – люди заключили договоры с целью получения пассивного дохода. Общая сумма материального ущерба составила свыше 280 млн рублей.

    «Кроме того, в деятельность финансовой пирамиды были вовлечены более 18 тысяч россиян. Они вложили в жилищный кооператив более 15 миллиардов рублей, два миллиарда из которых организаторы криминальной схемы присвоили. Десять предполагаемых участников преступного сообщества были задержаны в феврале 2022 года оперативниками ГУЭБиПК МВД России совместно с коллегами из Санкт-Петербурга и сотрудниками ФСБ России. Остальные обвиняемые в противоправной деятельности объявлены в розыск. Возбуждено уголовное дело по признакам преступления, предусмотренного частью 3 статьи 210, частью 4 статьи 159, частью 2 статьи 172.2 УК РФ. Расследование было взято на контроль руководством Следственного департамента МВД России», – сообщила Ирина Волк.

    По информации МВД, в общей сложности полицейскими и сотрудниками ФСБ проведено более 100 обысков по местам проживания фигурантов и в офисах подконтрольных им организаций. Изъята компьютерная техника, средства связи, документы и другие предметы, имеющие доказательственное значение.

    «В качестве обеспечительной меры по возмещению причиненного материального ущерба наложен арест на более чем 2300 находящихся в собственности кооператива квартир, а также на денежные средства на счетах компании в сумме свыше 3,7 млрд рублей. Также арестованы активы фигурантов на общую сумму порядка 1 млрд рублей», – рассказала генерал-майор полиции.

    По версии следствия, противоправная деятельность велась с 2014 года на территории девяти регионов России. Злоумышленниками были созданы подконтрольные организации с сетью региональных филиалов, которые работали под единым брендом «Лайф из Гуд». Гражданам предлагали стать пайщиками кооператива, обещая либо новое жилье, либо получение дохода в размере до 30% годовых. При этом реальным инвестированием вкладов фигуранты не занимались. Приобретение недвижимости и обещанные выплаты осуществлялись за счет привлечения средств новых клиентов. Кроме того, граждан вводили в заблуждение об уровне доходности вложений, указывая в договорах параметры гораздо ниже обещанных. Полученные от вкладчиков деньги похищались.

    Ранее стало известно, что Приморский районный суд Санкт-Петербурга заочно арестовал топ-лидера инвестиционного проекта Life is Good в Набережных Челнах Сергея Санникова и его жену Юлию. Также суд избрал меру пресечения в виде заключения под стражу и в отношении директора холдинга Игоря Маланчука. В июле этого года они были объявлены в федеральный розыск – соответствующая информация появилась в базе данных министерства.

  15. Altoncok表示:

    Tributes flood in for BBC sport commentator whose wife and daughters were killed in suspected crossbow attack
    гей секс порно

    Figures from across the United Kingdom have offered their condolences to a BBC sport commentator, after his wife and two daughters were killed by an alleged crossbow attacker, in deaths that again drew attention to the epidemic of violence against women.

    Carol Hunt, 61, wife of BBC horse racing commentator, John Hunt, and their daughters, Hannah Hunt, 28, and Louise Hunt, 25, died from injuries sustained in an attack in Bushey, just northwest of London, on Tuesday, according to police and Britain’s public broadcaster.

    A 26-year-old suspect wanted in connection with the killings, and named as Kyle Clifford, was found by British police in Enfield, north London, on Wednesday, following a sprawling manhunt. There were no previous reports to the force over Clifford, who is in serious condition in hospital and is yet to speak with officers, Hertfordshire Police said in a statement.

    A crossbow was recovered as part of the investigation, which police believe was used in a “targeted incident.”
    Epidemic of violence against women
    The killings of the three women rocked Britain, where mass murders are infrequent but violence against women and girls has been officially labeled as a national threat.

    A woman is killed by a man every three days in the UK and one in four women will experience domestic violence in her lifetime, the United Nations’ special rapporteur on violence against women and girls, Reem Alsalem, said earlier this year.

    Charities and human rights organizations have subsequently reiterated urgent demands to tackle femicide in the UK.

  16. kubet77表示:

    Hi, I do believe your web site might be having browser compatibility issues. Whenever I look at your web site in Safari, it looks fine but when opening in IE, it has some overlapping issues. I simply wanted to give you a quick heads up! Apart from that, excellent blog.

  17. kubet77表示:

    This is a topic that is close to my heart… Thank you! Exactly where are your contact details though?

  18. Dnrtwau表示:

    Привет!
    Приобрести документ о получении высшего образования вы имеете возможность в нашем сервисе.
    ast-diplomas24.ru/kupit-diplom-voronezh
    Хорошей учебы!

  19. OscarvaL表示:

    Arsenal https://arsenal.mesut-ozil-ar.com made a high-profile signing in 2013, signing star midfielder Mesut Ozil from Real Madrid.

  20. Excellent article! We are linking to this particularly great content on our website. Keep up the good writing.

  21. KennethDef表示:

    EuroAvia24.com – Cheap flights, hotels and transfers around the world!

  22. Robertfaply表示:

    The Saudi Football League https://saudi-arabian-championship.saudi-pro-league-ar.com known as the Saudi Professional League, is one of the most competitive and dynamic leagues in the world.

  23. IsaiasImaxy表示:

    Rodrigo Goes https://real-madrid.rodrygo-ar.com better known as Rodrigo, is one of the brightest young talents in modern football.

  24. Martinutick表示:

    In an era when many young footballers struggle to find their place at elite clubs, Javi’s https://barcelona.gavi-ar.com story at Barcelona stands out as an exceptional one.

  25. A fascinating discussion is definitely worth comment. I believe that you should publish more about this topic, it may not be a taboo subject but usually people don’t speak about such issues. To the next! All the best!

  26. Mazrobl表示:

    Добрый день!
    Пошаговая инструкция по официальной покупке диплома о высшем образовании
    vilchi.com/2024/06/23/купить-диплом-челгу-2/

  27. Trefomb表示:

    Здравствуйте!
    Купить диплом о среднем полном образовании, в чем подвох и как избежать обмана?
    vk.com/asemok_1255?w=wall391770830_1735
    Рады оказать помощь!.

  28. iptv表示:

    An intriguing discussion is worth comment. I do think that you should write more about this topic, it may not be a taboo matter but usually people don’t discuss these topics. To the next! Many thanks!

  29. RobertKnove表示:

    In recent years, the leading positions in the Spanish https://spanish-championship.laliga-ar.com championship have been firmly occupied by two major giants – Barcelona and Real Madrid.

  30. Bretttak表示:

    In the German football https://german-championship.bundesliga-football-ar.com championship known as the Bundesliga, rivalries between clubs have always been intense.

發佈留言

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