[英]How to sort a javascript array alphabetically with numbers at the end (after letters), and correctly sorting numerically?
我陣列的當前 output 是:
"10 FOOT", "45 RPM", "9 VOLT", "910D0", "AGUA", "BEAST", "KEN 5", "NEMCO"
我想要的是:
"AGUA", "BEAST", "KEN 5", "NEMCO", "9 VOLT", "10 FOOT", "45 RPM:, "910D0"
我如何實現這一目標?
您可以檢查字符串是否以數字開頭並按組對 rest 進行排序。
const array = ['10 FOOT', '45 RPM', '9 VOLT', '910D0', 'AGUA', 'BEAST', 'KEN 5', 'NEMCO']; array.sort((a, b) => isFinite(a[0]) - isFinite(b[0]) || a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' }) ); console.log(array);
const order = ["10 FOOT", "45 RPM", "9 VOLT", "910D0", "AGUA", "BEAST", "KEN 5", "NEMCO"]; order.sort((a, b) => /^[0-9]/.test(a) - /^[0-9]/.test(b) || a.localeCompare(b, undefined, { numeric: true })); console.log(order);
首先對以數字開頭的元素進行排序,然后使用 localeCompare 的數字選項(確保“10”>“2”)。
const arr = ["10 FOOT", "45 RPM", "9 VOLT", "910D0", "AGUA", "BEAST", "KEN 5", "NEMCO"]; const customCompare = (a, b) => /^\d/.test(a) - /^\d/.test(b) || a.localeCompare(b, undefined, { numeric: true }); const sorted = arr.sort(customCompare); console.log(...sorted);
您可以創建 2 個新的 arrays,對它們進行排序並將它們重新組合在一起:
const arr = ["10 FOOT", "45 RPM", "9 VOLT", "910D0", "AGUA", "BEAST", "KEN 5", "NEMCO"];
const nums = arr.filter(a => parseInt(a))
const words = arr.filter(a => !parseInt(a))
nums.sort((a,b) => parseInt(a) -parseInt(b))
words.sort()
const finalArray = words.concat(nums)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.