如何基于嵌套数组中的数值自定义比较对应字符的大小?
基于嵌套数组数值比较对应字符大小的解决方法
你直接执行console.log(arr[0][0]>arr[1][0])得到false,是因为JavaScript中直接比较字符串时,是按字符的Unicode编码值来判断的。'g'的Unicode编码是103,'s'是115,所以103<115,自然输出false——这和你想要的“按子数组里的数值比较对应字符”逻辑完全无关。
下面是几种可行的解决方式:
快速查询比较:转成键值对对象
先把嵌套数组转换成以字符为键、数值为值的对象,之后就能通过字符直接获取对应数值并比较:let arr = [['g',10000],['s',500],['b',3],['a',200]]; const charValueMap = Object.fromEntries(arr); // 比较'g'和's'的对应数值 console.log(charValueMap['g'] > charValueMap['s']); // 输出true直接比较指定子数组的数值
如果只是要比较某两个子数组对应的数值,直接提取子数组的第二个元素(数值部分)对比即可:console.log(arr[0][1] > arr[1][1]); // 输出true批量排序(按数值排序字符)
如果需要把整个数组按数值从大到小(或从小到大)排列,用数组的sort方法:// 按数值降序排序 const sortedArr = arr.sort((a, b) => b[1] - a[1]); console.log(sortedArr); // 输出 [['g',10000],['s',500],['a',200],['b',3]]
内容的提问来源于stack exchange,提问作者superpilot
相关产品推荐
相关产品推荐

