Javascript 如何按数字顺序对字符串数组排序?
例如,我有一个字符串数组Javascript 如何按数字顺序对字符串数组排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,例如,我有一个字符串数组['item 2'、'item 1'、'item 10'、'item 4']。我希望它像这样['item 1'、'item 2'、'item 4'、'item 10']但是默认情况下,sort()函数按字母顺序对值进行排序,这意味着它看起来像这样['item 1'、'item 10'、'item 2'、'item 4']您可以将一个函数传递给sort()方法并按自定义方式对其排序 let result = arr.sort((a,b) => a.split(' ')
['item 2'、'item 1'、'item 10'、'item 4']
。我希望它像这样['item 1'、'item 2'、'item 4'、'item 10']
但是默认情况下,sort()
函数按字母顺序对值进行排序,这意味着它看起来像这样['item 1'、'item 10'、'item 2'、'item 4']
您可以将一个函数传递给sort()
方法并按自定义方式对其排序
let result = arr.sort((a,b) => a.split(' ')[1]-b.split(' ')[1])
console.log(result);
let数组=['item 1'、'item 10'、'item 2'、'item 4'];
var customSort=函数(a,b){
返回编号(a.替换(“项目”)—编号(b.替换(“项目”);
}
log(array.sort(customSort));
//一行
console.log(array.sort((a,b)=>Number(a.replace(“item”),“”)-Number(b.replace(“item”),“”);
只需获取数字并对其排序即可
let数组=[“第1项”、“第10项”、“第2项”、“第4项];
const result=array.sort((a,b)=>a.match(/\d+/)-b.match(/\d+/);
控制台日志(结果)代码>您可以在中添加自定义比较函数
const myArr=[“第2项”、“第1项”、“第10项”、“第4项];
const sortArr=myArr.sort((a,b)=>{
常量num1=数字(a.分割(“”)[1]);
常量num2=数量(b.分割(“”)[1]);
返回num1-num2;
});
控制台日志(Sortar)
创建一个自定义的sort()函数
,并使用切片
获取字符串的编号,然后应用number()
将其转换为一个数字进行比较
注意:sort()
将更新原始数组
const数组=[“第1项”、“第10项”、“第2项”、“第4项];
排序((a,b)=>Number(a.slice(5))-Number(b.slice(5));
console.log(数组)代码>您可以选择任何答案。这是一个更通用的解决方案,用于排序以数值结尾的字符串(或不以数值结尾的字符串)
const tonumberzero=str=>{
常量maybeNumber=str.match(/(\d+)$/);
返回maybenNumber&+maybenNumber[0]| | 0;
};
字符串与数字的常量排序计数=(a,b)=>
Tonumberzero(a)-Tonumberzero(b);
console.log(
[‘项目2’、‘项目1’、‘项目10’、‘项目4’、‘项目222’,
“anything1023”、“notnumber”、“生命的意义是42”]
.sort(字符串与数字的排序)
);使用特定输入(及其变体,一个常量字符串后跟一个数字),array.sort((a,b)=>a.localeCompare(b,'EN',{numeric:true}))代码>将完成此操作。