【问题标题】:Sort javascript object with array as value以数组为值对 javascript 对象进行排序
【发布时间】:2014-08-27 14:04:35
【问题描述】:

我有一个 key:pair 格式的 Javascript 对象,其中 pair 是一个包含 2 个时间戳值的数组。我想对这个对象进行排序,以便首先显示具有最低数字(最早时间)的元素。

这是一个对象示例:{"21_2":[1409158800,1409160000],"20_1":[1409148000,1409149200],"56_1":[1409149800,1409151600]}

所以在这种情况下,我希望最终排序的对象读取:

{"20_1":[1409148000,1409149200],"56_1":[1409149800,1409151600],"21_2":[1409158800,1409160000]}

显然sort() 函数将在这里为数组发挥作用,但我如何访问对象内的这些值?请注意对象key 实际上不是整数,因为有下划线。

我发现了这个:Sort Complex Array of Arrays by value within,但无法将其应用于我的情况。任何帮助将不胜感激。

【问题讨论】:

  • 您无法对 JavaScript 对象进行排序。只能对数组进行排序。
  • 除此之外,你想做什么?这个问题可能会有所帮助:stackoverflow.com/questions/890807/…
  • @Cerbrus 我们不能把它放在一边,问题到此结束您无法对 JavaScript 对象进行排序直到您将其更改为数组
  • “排序”这个对象的最终目标是什么?通过说“我希望读取最终排序的对象”,您基本上是在说您要修改 toString() 函数。

标签: javascript arrays sorting object


【解决方案1】:

您可以像这样更改数据的结构:

var myArray = [{
        "id" : "21_2" // id or whatever these are
        "timeStamps" : [1409158800,1409160000]
    }, {
        "id" : "20_1"
        "timeStamps" : [1409148000,1409149200]
    }];

然后你可以通过常规的数组排序来排序:

myArray.sort(function(a, b){
    // however you want to compare them:
    return a.timeStamps[0] - b.timeStamps[0]; 
});

【讨论】:

  • 这就是我要找的。谢谢。
猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2022-06-17
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多