【问题标题】:Javascript sort array twice [duplicate]Javascript对数组进行两次排序[重复]
【发布时间】:2014-02-18 15:06:08
【问题描述】:

如果我有一个这样的位置数组:

["Roberts", "baltimore", "Maryland", "21212"],
["Adams", "baltimore", "Maryland", "21212"],
["Joes", "philadelphia", "Pennsylvania", "30333"],
["Carls", "new york", "New York", "40415"]

使用 Javascript 或 Jquery,我将如何首先按状态对它们进行排序,然后按名称对它们进行排序,因此生成的顺序将是:

["Adams", "baltimore", "Maryland", "21212"],
["Roberts", "baltimore", "Maryland", "21212"],
["Carls", "new york", "New York", "40415"],
["Joes", "philadelphia", "Pennsylvania", "30333"]

【问题讨论】:

  • 结果列表似乎没有按状态排序。
  • 数据似乎不是任何 JS 数据格式。
  • 你有什么问题?读取存储数据的任何文件?解析您的自定义数据格式?查找数组排序方法的文档?
  • 嗯,这不是有效的 JavaScript。
  • 被问了这么多次...stackoverflow.com/q/16164078/989121

标签: javascript jquery arrays sorting


【解决方案1】:

如果我们从一个实际的数组开始:

var orig = [
  ["Roberts", "baltimore", "Maryland", "21212"],
  ["Adams", "baltimore", "Maryland", "21212"],
  ["Joes", "philadelphia", "Pennsylvania", "30333"],
  ["Carls", "new york", "New York", "40415"]
];

我们可以这样排序:

var sorted = orig.sort(
  function(a, b) {
    // compare states
    if (a[2] < b[2])
      return -1;
    else if (a[2] > b[2])
      return 1;

    // states were equal, try names
    if (a[0] < b[0])
      return -1;
    else if (a[0] > b[0])
      return 1;

    return 0;
  }
);

返回:

[
  ["Adams","baltimore","Maryland","21212"],
  ["Roberts","baltimore","Maryland","21212"],
  ["Carls","new york","New York","40415"],     
  ["Joes","philadelphia","Pennsylvania","30333"]
]

示例:http://codepen.io/paulroub/pen/ADihk

【讨论】:

    【解决方案2】:

    试试这个答案(见最后),但需要一个明确的自定义标准:

    """ 比较(object1, object2)
    如果 object1.state > object2.state 则 object1 更大 (1)
    如果 object1.state 如果 object1.name > object2.name 则 object1 更大 (1)
    如果 object1.name 对象是相等的,或者至少不能按您公开的条件排序。
    """

    How to sort an array of objects with jquery or javascript

    (请注意,array.sort 中的“array”指的是您的对象数组,并且假设您的对象实际上具有字段名称“name”和“state”,因为您实际上没有指定它们 - 实际上它们没有字段,所以它们不是对象也不是数组)。

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多