sortBy保留密钥名称

时间:2014-11-24 22:23:25

标签: javascript sorting object underscore.js

我正在尝试对对象进行排序,但在排序后似乎无法保留每个对象的键名。

以下是我正在排序的样本json

series_data: {
embeded: {
    objectNameA: {
        item: {
        last:{reportdate:2014-10-05, trend:=, change:0, value:0},…},
        first: {reportdate:2013-01-06, trend:?, change:null, value:0},
        high: 1,
        low: 0,
        median: 0.043478260869565216,
        series: [{reportdate:2013-01-06, trend:?, change:null, value:0},…]
    },
    objectNameB: {…}

我需要objectName,因为它在我的模板中用于描述其他所有内容。

这是我如何对数据进行排序

var items = _.sortBy(series_data.embeded, function(series, index) {
    return series.cd.last.value
}).reverse();`

当我需要0:{…}, 1:{…}, 2:{…}时,会返回objectNameA:{…},objectNameB:{…}

或者更好

0:{objectNameA:{…},…}, 1:{objectNameB:{…},…}

如何在从最高到最低的顺序排序时保留或添加objectName?

2 个答案:

答案 0 :(得分:2)

我通过在key内的每个object上设置_.sortBy()属性来实现这一目标 - 不理想但只有一个解决方案

_.sortBy(object, function(item, key) {
    item.key = key;
    return item.sortattribute;
});

答案 1 :(得分:1)

我认为只要调用_.sortBy()就可以做到这一点。

但是,您可以分两步完成:

  1. 调用_.sortBy()并将每个对象的键指定为属性
  2. 在已排序的数组上调用_.each()以获取所需的对象结构
  3. 以下是JSBIN

    的示例

    潜在的问题是对象是无序的属性集合。