尝试在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);