我无法通过嵌入的键值对多维对象进行排序。我有这个对象:
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]));
}
我认为下划线(点)反转功能可以工作,但我无法应用它。