按嵌入键排序对象

时间:2016-04-28 19:48:03

标签: javascript arrays

我无法通过嵌入的键值对多维对象进行排序。我有这个对象:

var myClients =
          {  'cccc'  :   {       newValue        :       'test three'
                         ,       timeTest        :       3
                         }
          ,  'bbbb'  :   {       newValue        :       'test two;'
                         ,       timeTest        :       2
                         }
          ,   'aaaa'  :  {       newValue        :       'test one'
                         ,       timeTest        :       1
                         }
          };

console.log(util.inspect(myClients) )   ;

// current object displayed in raw order
for (var key in myClients)      {
    console.log(key + ' ' + util.inspect(myClients[key]));
}

我正在尝试返回按“timeTest”值排序的数组。这是我最好的猜测,但它不起作用。

tmpArray = _.sortBy(myClients, function(row) { return row.timeTest; } );

console.log(util.inspect(tmpArray));

for ( var result in tmpArray )  {
    console.log( (_.invert(myClients))[result] );
}

_.verts对我不起作用,无论如何使用它看起来效率都不高。

我看到的其他例子都是在一维物体上。

非常感谢任何建议。

编辑

这可能有资格作为答案,因为它完全符合我的要求,但是每次必须循环遍历主要对象似乎并不高效:

// display the original object
for (var key in myClients)      {
    console.log(key + ' ' + util.inspect(myClients[key]));
}

// create a new sorted array
var tmpArray = _.sortBy(myClients, function(key) { return key.timeTest; } );
var sortedClients = {};
for ( var result in tmpArray )  {
    for ( var key in myClients )    {
            if  ( myClients[key] === tmpArray[result] )     {
                    sortedClients[key] = myClients[key];
                    break;
            }
    }
}

// now display the sorted object
for (var key in sortedClients)      {
    console.log(key + ' ' + util.inspect(myClients[key]));
}

我认为下划线(点)反转功能可以工作,但我无法应用它。

0 个答案:

没有答案