排序对象javascript

时间:2015-08-04 19:10:54

标签: javascript

有很多类似的问题,但我找不到任何类似的问题。这是我的代码。

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

2 个答案:

答案 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;
}