js中带有大写的数字的对象如何排序?-灵析社区

正确计算方式

arr=[{km:'混合一组',rc:10},{km:'混合二组',rc:11},{km:'混合三组',rc:10},{km:'混合二组',rc:10},{km:'混合三组',rc:10},{km:'混合四组',rc:10},,{km:'混合四组',rc:10}] 使用arr.sort((a,b)=>(a.km.localeCompare(b.km, 'zh-Hans-CN'))排序,为何不能按照"混合一组、混合二组、混合三组..."的顺序,而是"混合二组、混合三组、混合四组、混合一组"?

阅读量:277

点赞量:12

问AI
如果您希望按照大写数字来排序数组中的对象,您可以编写一个自定义的比较函数,该函数将对象中的大写数字提取出来并将其转换为对应的阿拉伯数字,然后进行比较。以下是一个示例: // 定义一个函数,将大写数字转换为阿拉伯数字 function convertChineseNumberToArabic(chineseNumber) { var chineseNumberMap = { '一': 1, '二': 2, '三': 3, // 添加更多大写数字映射 }; return chineseNumberMap[chineseNumber]; } // 定义一个自定义比较函数 function customSort(a, b) { // 提取对象中的大写数字并转换为阿拉伯数字 var numA = convertChineseNumberToArabic(a.km.charAt(2)); var numB = convertChineseNumberToArabic(b.km.charAt(2)); // 比较转换后的数字 return numA - numB; } // 您的对象数组 var arr = [ { km: '混合一组', rc: 10 }, { km: '混合二组', rc: 11 }, { km: '混合三组', rc: 10 }, { km: '混合二组', rc: 10 }, { km: '混合三组', rc: 10 }, { km: '混合四组', rc: 10 }, { km: '混合四组', rc: 10 } ]; // 使用自定义比较函数进行排序 arr.sort(customSort); // 输出排序后的数组 console.log(arr); 这个示例中,我们首先定义了一个函数"convertChineseNumberToArabic",用于将大写数字转换为阿拉伯数字的映射。然后,我们定义了一个自定义的比较函数"customSort",该函数提取对象中的大写数字,并使用映射后的数字进行比较。最后,我们使用"Array.sort()"方法对数组进行排序,输出排序后的数组。