Javascript 如何对混合文本和数字的数据进行排序?
我有一个数据,它将显示为表,并使用orderBy(lodash)对数据进行排序,但它没有按我所希望的那样工作 现在,我的代码是Javascript 如何对混合文本和数字的数据进行排序?,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,我有一个数据,它将显示为表,并使用orderBy(lodash)对数据进行排序,但它没有按我所希望的那样工作 现在,我的代码是 const data=orderBy(realData、['name']、['asc']) 这是我的数据 输入: [{name:'A1'},{name:'A2'},{name:'A21'},{name:'B10'},{name:'A100'},{name:'A22'},{name:'B32'},{name:'A3'}] 问题是“orderBy”将数据按文本排序(ASCI
const data=orderBy(realData、['name']、['asc'])
这是我的数据
输入:
[{name:'A1'},{name:'A2'},{name:'A21'},{name:'B10'},{name:'A100'},{name:'A22'},{name:'B32'},{name:'A3'}]
问题是“orderBy”将数据按文本排序(ASCII排序)
电流输出:
[{name:'A1'},{name:'A100'},{name:'A2'},{name:'A21'},{name:'A22'},{name:'A3'},{name:'B10'},{name:'B32'}]
但是我希望数据输出像这样
[{name:'A1'},{name:'A2'},{name:'A3'},{name:'A21'},{name:'A22'},{name:'A100'},{name:'B10'},{name:'B32'}]
如果有人有任何建议,请帮忙
谢谢。排序数组时,可以使用string#localeCompare
回调。要对数组进行数字排序,请使用numeric
属性
let data=[{name:'A1'},{name:'A100'},{name:'A2'},{name:'A21'},{name:'A22'},{name:'A3'},{name:'B10'},{name:'B32'}];
data.sort((a,b)=>a.name.localeCompare(b.name,未定义,{numeric:true}));
控制台日志(数据)代码>
作为控制台包装{max height:100%!important;top:0;}
您可以在对数组排序时使用string\localeCompare
回调。要对数组进行数字排序,请使用numeric
属性
let data=[{name:'A1'},{name:'A100'},{name:'A2'},{name:'A21'},{name:'A22'},{name:'A3'},{name:'B10'},{name:'B32'}];
data.sort((a,b)=>a.name.localeCompare(b.name,未定义,{numeric:true}));
控制台日志(数据)代码>
.as控制台包装{max height:100%!important;top:0;}
一种简单易懂的方法如下:
data.sort((a, b) => {
const listA = a.name.trim().split('');
const listB = b.name.trim().split('');
const categoryA = listA.splice(0, 1);
const categoryB = listB.splice(0, 1);
const numberA = listA.join('');
const numberB = listB.join('');
if (categoryA > categoryB) return 1;
if (categoryA < categoryB) return -1;
return numberA - numberB;
});
data.sort((a,b)=>{
const listA=a.name.trim().split(“”);
const listB=b.name.trim().split(“”);
常数类别=列表拼接(0,1);
常量类别b=列表b.拼接(0,1);
常量numberA=listA.join(“”);
常量numberB=listB.join(“”);
如果(categoryA>categoryB)返回1;
if(categoryA
一种简单易懂的方法如下:
data.sort((a, b) => {
const listA = a.name.trim().split('');
const listB = b.name.trim().split('');
const categoryA = listA.splice(0, 1);
const categoryB = listB.splice(0, 1);
const numberA = listA.join('');
const numberB = listB.join('');
if (categoryA > categoryB) return 1;
if (categoryA < categoryB) return -1;
return numberA - numberB;
});
data.sort((a,b)=>{
const listA=a.name.trim().split(“”);
const listB=b.name.trim().split(“”);
常数类别=列表拼接(0,1);
常量类别b=列表b.拼接(0,1);
常量numberA=listA.join(“”);
常量numberB=listB.join(“”);
如果(categoryA>categoryB)返回1;
if(categoryA
您可能要签出:的可能重复您可能要签出:的可能重复