Javascript 按数字项排序二维数组

Javascript 按数字项排序二维数组,javascript,arrays,sorting,Javascript,Arrays,Sorting,我想使用第5列对这个数组进行排序 var table=[ ["teamA",6,2,0,2,6], ["teamB",6,1,1,2,4], ["teamC",6,2,1,1,7]]; 这是一个包含Pld、W、D、L和Pts列的足球联赛表格。我计划稍后增加目标差异 我尝试了以下代码: console.log(table.sort(compare)); function compare( a, b ) { if (table[a][5]<table[b][5]){

我想使用第5列对这个数组进行排序

var table=[
  ["teamA",6,2,0,2,6],
  ["teamB",6,1,1,2,4],
  ["teamC",6,2,1,1,7]];
这是一个包含Pld、W、D、L和Pts列的足球联赛表格。我计划稍后增加目标差异

我尝试了以下代码:

console.log(table.sort(compare));

function compare( a, b ) {
  if (table[a][5]<table[b][5]){
    return -1;
  }
  if (table[a][5]>table[b][5]){
    return 1;
  }
  return 0;
}
不幸的是,代码甚至没有运行。我得到了错误
无法读取未定义的属性“5”

您不需要索引到表中。迭代通过将每一行传递给函数而不是行索引来实现这一点,只对所需的列进行索引。您可以使用-而不是if来获得相同的效果:

变量表=[ [teamA,6,2,0,2,6], [teamB,6,1,1,2,4], [teamC,6,2,1,1,7] ]; console.logtable.sortcompare; 功能比较a,b{ 返回a[5]-b[5]
} 比较方法将接收数组中的实际对象,而不是这些对象的索引。因此,将compare方法重构为:

function compare( a, b ) {
  if (a[5] < b[5]){
    return -1;
  }
  if (a[5]>n[5]){
    return 1;
  }
  return 0;
}
function compare( a, b ) {
  return a[5] - b[5];
}
可能重复的