【问题标题】:Sort an array of objects based on a numeric key given as String values [duplicate]基于作为字符串值给出的数字键对对象数组进行排序[重复]
【发布时间】:2018-07-03 20:53:38
【问题描述】:

我有一个包含键值对的数组,数组列是 id 和 name。我想按 id 对这个数组进行排序。

id 列值是字符串类型,但我想将它们排序为数值也应该在 IE 上工作

这是我的代码:

var items = [{
    "id": "165",
    "name": "a"
  },
  {
    "id": "236",
    "name": "c"
  },
  {
    "id": "376",
    "name": "b"
  },
  {
    "id": "253",
    "name": "f"
  },
  {
    "id": "235",
    "name": "e"
  },
  {
    "id": "24",
    "name": "d"
  },
  {
    "id": "26",
    "name": "d"
  }
];

console.log(items.sort((a, b) => Number(a.ID) - Number(b.ID)))

虽然顺序确实发生了变化,但它并没有像预期的那样在 IE 中发生错误。

【问题讨论】:

  • 你有没有尝试过。如果是这样,请发布您的代码。 Stack Overflow 不是“为我编写代码”服务。
  • www.google.com for real now.. 这种问题每天都在这里被问到,每个该死的一天,你肯定可以在以前的一个中找到答案
  • item.sort((a, b) => Number(a.ID) - Number(b.ID)) 我用过,但它不适用于 IE11。 @Archer
  • @Anshul “它不起作用”不是很有帮助。什么不工作?请为您的问题添加更多详细信息

标签: javascript jquery


【解决方案1】:

现在你可以用纯 JS 来做,使用 sort 方法..

var items = [
  {
    "id": "165",
    "name": "a"
  },
  {
    "id": "236",
    "name": "c"
  },
  {
    "id": "376",
    "name": "b"
  },
  {
    "id": "253",
    "name": "f"
  },
  {
    "id": "235",
    "name": "e"
  },
  {
    "id": "24",
    "name": "d"
  },
  {
    "id": "26",
    "name": "d"
  }
];

items.sort((a,b)=>+a.id>+b.id);
console.log(items);

【讨论】:

  • 那是一个病态的班轮 :)
  • 箭头函数在 IE 中不起作用
  • 你是右箭头不适用于 IE @Andrew Bone
  • 那么不要使用箭头函数,这里不需要它们
  • items.sort(function(a, b){return +(a.id)>+(b.id)}) 应该在 IE 中工作
猜你喜欢
  • 1970-01-01
  • 2021-07-25
  • 1970-01-01
  • 2021-03-08
  • 2013-04-04
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2018-11-20
相关资源
最近更新 更多