键值对中的下划线求和值
Underscore summing values in key value pairs
我有以下对象:
{key: [{thing: value, stuff: value}, {thing: value, stuff: value}], key2: [{thing: value, stuff: value}, {thing: value, stuff: value}]}
对于每个键,我想为每个键获取一个只有填充值的数组,或者更好的是为每个键获取填充值的总和。填充值是我想要求和的数字。我整天都在做这件事,我已经束手无策了。
这是数据的确切形式:
顶层:
[Array[1], Array[1], Array[3], Array[1], Array[1], Array[1], Array[2], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1]]
这里是数组[3]:
2: Array[3]
Array[3]中的第一个对象:
0: 对象
对象内容:
Amounts: Array[3]
Avg: 1202.38
Bill: 871.43
每个对象中还有另外十几个键值对。我想对已经按用户分组的每个数组的所有 "Bill" 求和。 Bill 存在于每个数组中的每个对象中。
为了获得您在最顶部看到的版本,我做了:
_.groupBy(_.flatten(BigArray),'Name');
我认为这将是朝着正确方向迈出的一步,因为它明确了用户是谁,因为我需要每个名称的总帐单。
这是你想要的吗?
var d = {
key: [{
thing: "a",
stuff: 1
}, {
thing: "b",
stuff: 2
}],
key2: [{
thing: "a",
stuff: 3
}, {
thing: "b",
stuff: 4
}]
};
var result = _.map(d, function(arr, key) {
var stuffValues = _.pluck(arr, 'stuff');
return {
key: key,
stuffSum: _.reduce(stuffValues, function(memo, num) {
return memo + +num;
}, 0)
};
});
document.getElementById('output').textContent = JSON.stringify(result);
// => [{"key":"key","stuffSum":3},{"key":"key2","stuffSum":7}]
<script src="//underscorejs.org/underscore-min.js"></script>
<pre id="output"></pre>
我有以下对象:
{key: [{thing: value, stuff: value}, {thing: value, stuff: value}], key2: [{thing: value, stuff: value}, {thing: value, stuff: value}]}
对于每个键,我想为每个键获取一个只有填充值的数组,或者更好的是为每个键获取填充值的总和。填充值是我想要求和的数字。我整天都在做这件事,我已经束手无策了。
这是数据的确切形式:
顶层:
[Array[1], Array[1], Array[3], Array[1], Array[1], Array[1], Array[2], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1], Array[1]]
这里是数组[3]:
2: Array[3]
Array[3]中的第一个对象:
0: 对象
对象内容:
Amounts: Array[3]
Avg: 1202.38
Bill: 871.43
每个对象中还有另外十几个键值对。我想对已经按用户分组的每个数组的所有 "Bill" 求和。 Bill 存在于每个数组中的每个对象中。
为了获得您在最顶部看到的版本,我做了:
_.groupBy(_.flatten(BigArray),'Name');
我认为这将是朝着正确方向迈出的一步,因为它明确了用户是谁,因为我需要每个名称的总帐单。
这是你想要的吗?
var d = {
key: [{
thing: "a",
stuff: 1
}, {
thing: "b",
stuff: 2
}],
key2: [{
thing: "a",
stuff: 3
}, {
thing: "b",
stuff: 4
}]
};
var result = _.map(d, function(arr, key) {
var stuffValues = _.pluck(arr, 'stuff');
return {
key: key,
stuffSum: _.reduce(stuffValues, function(memo, num) {
return memo + +num;
}, 0)
};
});
document.getElementById('output').textContent = JSON.stringify(result);
// => [{"key":"key","stuffSum":3},{"key":"key2","stuffSum":7}]
<script src="//underscorejs.org/underscore-min.js"></script>
<pre id="output"></pre>