JavaScript如何实现二维数组优先按首元素、次按第二元素升序排序
实现方案
你可以直接使用 JavaScript 原生的Array.sort()方法完成需求,由于你数组内的坐标值是toFixed()生成的字符串类型,排序时需要先转为数值再比较,避免字符串字典序排序出现'10' < '2'的错误结果。
核心排序代码
finalanswer.sort((a, b) => { // 优先比较第一个元素(x轴)数值 const xGap = Number(a[0]) - Number(b[0]) // x轴值不同返回x轴差值,x轴值相同返回第二个元素(y轴)差值 return xGap !== 0 ? xGap : Number(a[1]) - Number(b[1]) })
整合到你的现有代码中
const mySet = uniqueArray4(x_y_total); const answer = [] const finalanswer = [] mySet.forEach(element => { let sumx = 0, sumy = 0; for(let i = 0; i < element.length; i++) { sumx += element[i][0]/element.length; sumy += element[i][1]/element.length; } answer.push([sumy.toFixed(1), sumx.toFixed(1)]); }); answer.forEach(element => { finalanswer.push(element); }) // 新增排序逻辑即可 finalanswer.sort((a, b) => { const xGap = Number(a[0]) - Number(b[0]) return xGap !== 0 ? xGap : Number(a[1]) - Number(b[1]) })
注意事项
如果你实际需要将sumx作为x轴主排序依据,只需要把排序逻辑里的a[0]/b[0]和a[1]/b[1]交换位置即可,逻辑规则保持不变。
内容的提问来源于stack exchange,提问作者Ayush Yadav
相关产品推荐
相关产品推荐

