iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
0
Modern Web

森林系工程師之開始工作才學JS?!系列 第 19

Day18 -- Sort Without Articles

目標

Articles是英文中的冠詞,包含the, a, an,冠詞的存在會影響字串在列表中的排序,所以今天要來學習的是,不將冠詞加入排序

範例資料

const bands = ['The Plot in You', 'The Devil Wears Prada', 'Pierce the Veil', 'Norma Jean', 'The Bled', 'Say Anything', 'The Midway State', 'We Came as Romans', 'Counterparts', 'Oh, Sleeper', 'A Skylit Drive', 'Anywhere But Here', 'An Old Dog'];

Step1

function strip(bandName) {
    return bandName.replace(/^(a |the |an )/i, '').trim();
}

const ordered = bands.sort((a, b) => strip(a) > strip(b) ? 1 : -1);

console.log(ordered);

在排序開始之前,要先移除冠詞(Articles),這邊用到的是正規表達式^表示從字串的開頭開始比對,i表示的是忽略大小寫,將冠詞以空字串取代掉之後,再以trim()將字串前後的空白消掉

最後,排序的部分就以之前提過的sort()完成,sort()也可以直接完成照字母先後排序

Step2

document.querySelector('#bands').innerHTML = ordered.map(band => `<li>${band}</li>`).join('')

最後,只要將排序過的陣列以innerHTML插入顯示畫面就完成了


上一篇
Day17 -- Text Shadow Mouse Move Effect
下一篇
Day19 -- Tally String Times with Reduce
系列文
森林系工程師之開始工作才學JS?!32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言