2015-06-21 72 views
2

我想排序数组中的孩子们,我已经第一嵌套的“民”:尝试使用.sortBy多维数组

_ = 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); 

when I log newdata I get:

但后来我尝试排序“编号”由内每两个“名”的最高到最低的对象

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

当我拿到这些对象仍然在原来的顺序(而不是由NUM排序)

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

回答

0

请看看这能否解决你的问题:

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);