交换二维数组的 2 个元素

Swapping 2 elements of 2D array

我无法根据列值对数组进行排序。我有一个二维数组:

var cl12 =  [[9, 10.5], [10, 11.5], [12, 13.5], [12.5, 14.5], [14.5, 15], [16, 18], [16, 17]]

现在你可以在上面的数组中看到,最后一个和倒数第二个元素在第 0 个索引中具有相同的值,但是它们没有根据列排序,因为 [16,18] 应该在 [16,17] 之后。 ..现在我已经写了一个 for 循环来得到一个完整的排序数组,

 for(i=0;i<cl12.length;i++){
      if((cl12[i][0]==cl12[i+1][0]) && (cl12[i][1]>cl12[i+1][1])){
         var temp = cl12[i+1];
         cl12[i+1]=cl12[i];
         cl12[i] = temp ;
         }
       }  
     console.log(cl12)

但它在控制台上给出了一个错误:未捕获的类型错误:无法读取未定义的 属性“0”

您正在将每个元素与索引大一的元素进行比较,因此您应该只循环到比数组长度小一的位置。

for(i=0;i<cl12.length-1;i++){

var cl12 =  [[9, 10.5], [10, 11.5], [12, 13.5], [12.5, 14.5], [14.5, 15], [16, 18], [16, 17]]
for(i=0;i<cl12.length-1;i++){
  if((cl12[i][0]==cl12[i+1][0]) && (cl12[i][1]>cl12[i+1][1])){
    var temp = cl12[i+1];
    cl12[i+1]=cl12[i];
    cl12[i] = temp ;
  }
}  
console.log(cl12)