我有一个数组,其值如下:
arr = [
['1','lorem'],
['2','ipsum'],
['1.1','sit'],
['1.2','lorem'],
['3','ipsum'],
['1.3','sit'],
['1.4','sit'],
['1.5','lorem'],
['4','ipsum'],
['1.6','sit'],
['1.7','sit'],
['1.8','sit'],
['1.9','lorem'],
['5','ipsum'],
['1.10','sit']
]
按以下方式分类:
arr = [
['1','lorem'],
['1.1','sit'],
['1.2','lorem'],
['1.3','sit'],
['1.4','sit'],
['1.5','lorem'],
['1.6','sit'],
['1.7','sit'],
['1.8','sit'],
['1.9','lorem'],
['1.10','sit']
['2','ipsum'],
['3','ipsum'],
['4','ipsum'],
['5','ipsum'],
]
我已经使用localCompare进行排序,但是实际上它是无效的排序,因为1.10的值在1.2或1.3之前列出。我需要的1.2是在1.10或1.11之前排序的,依此类推。
答案 0 :(得分:2)
尝试使用String.prototype.localeCompare()
grepl("illegal parking.*obstruction|obstruction.*illegal parking", Text1, ignore.case=TRUE)
是否应使用数字排序规则,例如“ 1” <“ 2” <“ 10”。可能的值为numeric
和true
;默认值为false
。
false
答案 1 :(得分:0)
基于'。'分割字符串然后分别比较每个部分,如下所示-
var arr = [
['1','lorem'],
['2','ipsum'],
['1.1','sit'],
['1.2','lorem'],
['3','ipsum'],
['1.3','sit'],
['1.4','sit'],
['1.5','lorem'],
['4','ipsum'],
['1.6','sit'],
['1.7','sit'],
['1.8','sit'],
['1.9','lorem'],
['5','ipsum'],
['1.10','sit']
]
var sortedArr=arr.sort((a,b)=>{
var aArr=a[0].split('.');
var bArr=b[0].split('.');
if(aArr[0]!==bArr[0]) {
return aArr[0]-bArr[0];
}
else {
if(aArr.length===1) {
return -1
}
if(bArr.length===1) {
return 1;
}
return parseInt(aArr[1])-parseInt(bArr[1]);
}
})
console.log(JSON.stringify(sortedArr));
// [["1","lorem"],["1.1","sit"],["1.2","lorem"],["1.3","sit"],["1.4","sit"],["1.5","lorem"],["1.6","sit"],["1.7","sit"],["1.8","sit"],["1.9","lorem"],["1.10","sit"],["2","ipsum"],["3","ipsum"],["4","ipsum"],["5","ipsum"]]
答案 2 :(得分:0)
使用自定义比较器
function sorta(a, b) {
let [numA, decA] = a[0].split(".");
let [numB, decB] = b[0].split(".");
if (numA != numB) {
return numA - numB;
} else {
return decA-decB
}
}
arr = [
['1','lorem'],
['2','ipsum'],
['1.1','sit'],
['1.2','lorem'],
['3','ipsum'],
['1.3','sit'],
['1.4','sit'],
['1.5','lorem'],
['4','ipsum'],
['1.6','sit'],
['1.7','sit'],
['1.8','sit'],
['1.9','lorem'],
['5','ipsum'],
['1.10','sit']
]
console.log(arr.sort(sorta))