试图在多维数组中使用.sortBy

时间:2015-06-21 16:31:05

标签: node.js multidimensional-array underscore.js

我试图排序" 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);

when I log newdata I get:

然后我尝试排序" num"在两个" name"中的每一个中从最高到最低。对象

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

当我得到这些对象时,它们仍处于原始顺序(并且不按num排序)

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

1 个答案:

答案 0 :(得分: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);