我有一个看起来像这样的数组:
[ { average_cpu: 0.5,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 20,
node_url: 'http://22.22.22/nodes',
__v: 0 } ]
所以有4个不同的对象,有3个不同的值。我想要实现的是基于node_url
对这个数组进行拆分/分组 - 所以理想的最终效果是我将有两个不同的数组,如下所示:
var array1 = [ { average_cpu: 0.5,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 } ]
var array2 = [ { average_cpu: 20,
node_url: 'http://22.22.22/nodes',
__v: 0 } ]
但是,我事先并不知道node_url,因此我并不是100%确定如何做到这一点。我已尝试使用_.groupBy
,但由于我不知道node_url
还有另一种方法可以达到这个目的吗?
任何帮助将不胜感激。
答案 0 :(得分:0)
使用_.groupBy你可以这样做:
var source= [ { average_cpu: 0.5,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 0,
node_url: 'http://111.11.1111/nodes',
__v: 0 },
{ average_cpu: 20,
node_url: 'http://22.22.22/nodes',
__v: 0 } ]
var grouped=_.groupBy(source, function (e) {
return e.node_url;
});
//for (let group in grouped) {
// console.log('*********Elements in group ' + group+': *******')
// console.log(grouped[group]);
//}
//For nodejs
Object.keys(grouped).forEach(function(key) {
var group = grouped[key];
console.log('*********Elements in group ' + key+': *******')
console.log(group);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>