我想使用排序5柱(PTS)该阵列。
var table=[
["teamA",6,2,0,2,6],
["teamB",6,1,1,2,4],
["teamC",6,2,1,1,7]];
这是与场次,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;
}
不幸的是,代码甚至不运行。 我得到的错误cannot read property '5' of undefined.
你不需要索引表。 迭代确实通过传递每一行到函数(未行索引),只是索引中的列你想要的。 您可以使用-
而不是if
要获得同样的效果:
var table = [ ["teamA", 6, 2, 0, 2, 6], ["teamB", 6, 1, 1, 2, 4], ["teamC", 6, 2, 1, 1, 7] ]; console.log(table.sort(compare)); function compare(a, b) { return a[5] - b[5] }
您的比较方法的阵列,而不是内收到实际的对象,这些对象的索引。 因此,重构你的比较方法是:
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];
}