有很多类似的问题,但我找不到任何类似的问题。这是我的代码。
for (var i = 0; i < count_batters; i++) {
var post = {
player_name: jsonData[i].player_name,
fantasy_points: jsonData[i].avg_fpts_fd
}
console.log(post);
function compare(a,b) {
if (a.fantasy_points < b.fantasy_points)
return -1;
if (a.fantasy_points > b.fantasy_points)
return 1;
return 0;
}
post.sort(compare);
我想通过“fantasy_points”排序“发布”。它默认按player_name排序。我试过.sort()不能在这个对象上工作。上面代码给出的错误是undefined is not a function
答案 0 :(得分:3)
将对象推入数组,然后您可以对数组进行排序:
var posts = [];
for (var i = 0; i < count_batters; i++) {
var post = {
player_name: jsonData[i].player_name,
fantasy_points: jsonData[i].avg_fpts_fd
};
posts.push(post);
}
function compare(a,b) {
if (a.fantasy_points < b.fantasy_points)
return -1;
if (a.fantasy_points > b.fantasy_points)
return 1;
return 0;
}
posts.sort(compare);
答案 1 :(得分:-4)
看起来你的比较函数在for循环中?如果你拿出来我想象它会起作用。或者您可以将一个匿名函数作为比较函数放入排序
post.sort(function(a,b) {
if (a.fantasy_points < b.fantasy_points)
return -1;
if (a.fantasy_points > b.fantasy_points)
return 1;
return 0;
}