簡體   English   中英

如何按字母順序對 javascript 數組進行排序,最后是數字(字母之后),並正確地按數字排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM