尝试在multidimensional array中使用.sortBy

我想sorting我刚刚嵌套的数组中的“num”数组:

_ = require('underscore'); _.nst = require('underscore.nest'); var data = [ {'name' : 'name 1', 'num' : 40}, {'name' : 'name 1', 'num' : 20}, {'name' : 'name 2', 'num' : 10}, {'name' : 'name 2', 'num' : 50}, {'name' : 'name 2', 'num' : 40}, {'name' : 'name 2', 'num' : 70}, {'name' : 'name 2', 'num' : 30} ]; //first I nest the data by the "name" var newdata = _.nst.nest(data, 'name'); console.log(newdata); 

当我记录新数据时,我得到:

但是,然后我尝试在两个“名称”对象的每一个中将“num”按高到低sorting

 var theSortedChildren0 = _.sortBy(newdata.children[0].children, 'num'); var theSortedChildren1 = _.sortBy(newdata.children[1].children, 'num'); 

当我得到这些对象仍然是原来的顺序(而不是按numsorting)

  console.log(theSortedChildren0); console.log(theSortedChildren1); 

请看这个,如果它解决了你的问题:

 var data = [ {'name' : 'name 1', 'num' : 40}, {'name' : 'name 1', 'num' : 20}, {'name' : 'name 2', 'num' : 10}, {'name' : 'name 2', 'num' : 50}, {'name' : 'name 2', 'num' : 40}, {'name' : 'name 2', 'num' : 70}, {'name' : 'name 2', 'num' : 30} ]; var obj = _.chain(data) .groupBy('name') .map(function ( value) { return _.sortBy(value, 'num'); }).value(); console.log(obj);