排序对象javascript

Sort object javascript

本文关键字:javascript 对象 排序      更新时间:2023-09-26

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

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"对"post"进行排序。默认情况下按player_name排序。我已经尝试过。sort(),它在这个对象上不起作用。上面代码给出的错误是undefined is not a function

将对象放入数组中,然后可以对数组进行排序:

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);

看起来你的比较函数是for循环内部?如果你把它拿出来,我想它会起作用的。或者你可以把一个匿名函数放到sort中作为比较函数

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