尝试在多维数组中使用 .sortBy
Trying to use .sortBy in a multidimensional array
我正在尝试对我首先嵌套的数组中的 "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);
但随后我尝试在两个 "name" 对象中按从高到低的顺序对 "num" 进行排序
var theSortedChildren0 = _.sortBy(newdata.children[0].children, 'num');
var theSortedChildren1 = _.sortBy(newdata.children[1].children, 'num');
当我得到这些时,对象仍然是它们的原始顺序(而不是按数字排序)
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);
我正在尝试对我首先嵌套的数组中的 "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);
但随后我尝试在两个 "name" 对象中按从高到低的顺序对 "num" 进行排序
var theSortedChildren0 = _.sortBy(newdata.children[0].children, 'num');
var theSortedChildren1 = _.sortBy(newdata.children[1].children, 'num');
当我得到这些时,对象仍然是它们的原始顺序(而不是按数字排序)
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);