前端中一个集合根据其中一个的location字段排序这个字段中为中文和数字的组合例如架12、架1按照中文符排序当中文一致按照后面的数字大小排序
在前端中,你可以使用Array的sort方法来实现根据location字段排序的功能。sort方法可以接受一个比较函数作为参数,我们可以在该函数中定义排序规则。
假设你的集合是一个包含多个对象的数组,每个对象都有一个location字段,你可以按照以下方式排序:
var collection = [
{ location: '架12' },
{ location: '架1' },
{ location: '架3' },
{ location: '架2' },
];
collection.sort(function(a, b) {
var locationA = a.location;
var locationB = b.location;
// 提取中文部分
var chineseA = locationA.match(/[\u4e00-\u9fa5]+/g)[0];
var chineseB = locationB.match(/[\u4e00-\u9fa5]+/g)[0];
// 比较中文部分
if (chineseA < chineseB) {
return -1;
} else if (chineseA > chineseB) {
return 1;
} else {
// 中文部分相同时,比较数字部分
var numberA = parseInt(locationA.match(/\d+/g)[0]);
var numberB = parseInt(locationB.match(/\d+/g)[0]);
return numberA - numberB;
}
});
console.log(collection);
在上述代码中,我们使用正则表达式分别提取了location字段中的中文部分和数字部分,并进行了比较。如果中文部分不同,直接按照中文的字符顺序进行排序;如果中文部分相同,再按照数字的大小进行排序。
输出结果如下:
[
{ location: '架1' },
{ location: '架2' },
{ location: '架3' },
{ location: '架12' },
]
可以看到,集合中的对象已按照location字段排序。
原文地址: https://www.cveoy.top/t/topic/jbDV 著作权归作者所有。请勿转载和采集!