Tôi đã thử chức năng sắp xếp điển hình và kiểm tra xem mục có phải là chuỗi không. Nhưng tôi nhận được một kết quả rất lạ. Đã thử nhiều cách tiếp cận khác nhau.Sắp xếp mảng các đối tượng có dấu chấm, chữ cái, số. Tôi đã có thể sắp xếp theo số, nhưng giá trị hỗn hợp là khó khăn. Không chắc chắn nếu có thể làm điều đó đúng
var arr = [{section: '12.2.a'},
{section: '12.2.b.iii'},
{section: '12.2.c'},
{section: '12'},
{section: '12A'},
{section: '12.3.b'},
{section: '12.3.c'},
{section: 'Q2'},
{section: 'Q32'},
{section: 'Q6'},
{section: 'Q5'}]
var arr2 = arr.sort(function(a, b) {
var nums1 = a.section.split(".");
var nums2 = b.section.split(".");
for (var i = 0; i < nums1.length; i++) {
if (nums2[i]) {
if (nums1[i] !== nums2[i]) {
if (isNaN(parseInt(nums1[i])) && isNaN(parseInt(nums2[i]))) {
return nums1[i].localeCompare(nums2[i]);
}
return parseInt(nums1[i]) - parseInt(nums2[i]);
}
} else {
return 1;
}
}
return -1;
});
Tôi có nên sử dụng localeCompare hoặc có thể không? có muốn đầu ra là:
[
{section: '12'},
{section: '12A'},
{section: '12.2.a'},
{section: '12.2.b.iii'},
{section: '12.2.c'},
{section: '12.3.b'},
{section: '12.3.c'},
{section: 'Q2'},
{section: 'Q6'},
{section: 'Q5'}
{section: 'Q32'}]
nhiều Sẽ đánh giá cao bất cứ đề nghị
Cảm ơn bạn ssoooo nhiều, điều này đã làm việc rất nhiều !! – Prozrachniy