【问题标题】:Sorting array of point objects in Javascript在Javascript中对点对象数组进行排序
【发布时间】:2012-05-02 02:41:30
【问题描述】:

您好,我想在 javascript 中对点对象数组进行排序,以便数组,

[{x: 220, y: 1080}, {x: 1, y: 0}, {x: 0, y: 1080}]

变成

[{x: 0, y: 1080}, {x: 1, y: 0}, {x: 220, y: 1080}]

提前致谢

【问题讨论】:

  • points.sort(function(a,b) { return a.x-b.x || a.y-b.y })

标签: javascript jquery sorting jquery-ui-sortable


【解决方案1】:
var sorted = unsorted.sort(function(a,b) { return a.x - b.x })

【讨论】:

  • 如果x坐标相同,排序顺序是什么?
  • @Alnitak。虽然你是对的,但问题中没有要求。 +1
  • @Alnitak:是的,我的回答确实与此无关。
【解决方案2】:
arr.sort(function(a,b) {
    if( a.x == b.x) return a.y-b.y;
    return a.x-b.x;
});

这是sort的基本功能...

【讨论】:

  • 请使用=== 而不是==
  • 为什么?它在这里有什么不同?
  • 在 12 年多的 JS 中,老实说,我从来没有发现 ===== 更好用的案例......
  • @YS:要做到这一点,我们必须想象x 可以是不同数据类型的场景,这完全超出了问题的范围,但甚至被授予那,我认为如果一个 x 是作为一个字符串值出现,但等于一个数值,我倾向于说我们想要将它们视为平等.
  • ...如果您担心a.x 有时可能是一个字符串或其他东西,那么a.x-b.x 的问题会比担心使您的排序稳定的问题更大。
猜你喜欢
  • 2019-01-08
  • 2022-06-17
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多