【问题标题】:Javascript sort object by integer fieldJavascript按整数字段排序对象
【发布时间】:2019-09-25 19:23:03
【问题描述】:

我有一个对象数组,其中一个字段是整数值,我想使用它的字段进行排序。

例如:

var myArray = {
    { name: "Robert", age: 47 },
    { name: "Carl", age: 22 },
    { name: "Ronaldo", age: 15 }
};

myArray.sort(function(a, b){ a.age - b.age });

实际的程序运行 24 小时并每分钟对数组进行排序,有时它会正确排序(没有代码更改),有时(大部分)它会执行看似随机排序的操作。

期望的输出是:

myArray = {
{ name: "Ronaldo", age: 15 },
{ name: "Carl", age: 22 },
{ name: "Robert", age: 47 }
}

但每次我运行代码时,它都会给出不同的顺序,因为它根本没有排序。

真正的数组有 0-3000 个条目,每个对象都有很多属性。不知道是跟数组的大小还是数据结构有关。

已经到处搜索,每个人都告诉传递一个自定义 JS 函数来对数组进行排序。该函数将与“ifs”进行比较或减去它们,但我找不到任何人在谈论这个......

我尝试将 a.ageb.age 包装成 parseInt() 的和

myArray = myArray.sort(function(a, b){a.age - b.age});

【问题讨论】:

  • 我假设您有一个拼写错误,因为您的数组是使用 {} 定义的,并且您在导致问题的排序方法中有一个简单的错误。
  • 我只是忘记在函数中添加“返回”。从数组开始,它被作为对象装箱,但我可以像这样迭代它: for (var i = 0; i
  • 不可能是{{},{},{}}

标签: javascript arrays sorting object


【解决方案1】:

你需要从你的函数中返回值。

myArray.sort(function(a, b){ return a.age - b.age });

const myArray = [{
    name: "Ronaldo",
    age: 15
  },
  {
    name: "Carl",
    age: 22
  },
  {
    name: "Robert",
    age: 47
  }
];

const sortedArray = myArray.sort(function(a, b) {
  return a.age - b.age
});

console.log(sortedArray);

【讨论】:

  • 这里忘记在函数中添加return了。但是在真实的代码中是可以的。说起阵法。正如您所展示的,它似乎是一个位置为零的数组,其中包含“数组对象”。就像在我的代码中一样,该数组仅使用“{}”创建,而不是将每个项目都放在“[]”中。但我可以用一个简单的 for 来迭代它: for (var i= 0; i
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多