如何通过任意一组键对数组元素进行分组
How to group array elements by arbitrary set of keys?
有一个对象数组,我想通过组合不同的键集来求和值。更具体地说,有一个对象数组,描述一顿饭(0 -早餐,1 -小吃…),我想做两个不同的和:
- 每餐营养价值总和(数量)
- 总营养价值(量)
对象数组的示例如下:
var arrayIngredients = [{mealNumber: 4, name: "Sugars, total", quantity: 1.4300000000000002}, {mealNumber: 4, name: "Magnesium, Mg", quantity: 14.950000000000001}, {mealNumber: 3, name: "Vitamin A, IU", quantity: 27.9}]
有没有人知道什么是最有效的方法来求和值为一个给定的键(名称)或多个键(mealNumber,名称)?
您需要使用Array.prototype.reduce
(不需要第三方库)
运行以下代码片段以获得详细的示例:
var arrayIngredients = [{
mealNumber: 4,
name: "Sugars, total",
quantity: 1.4300000000000002
}, {
mealNumber: 4,
name: "Magnesium, Mg",
quantity: 14.950000000000001
}, {
mealNumber: 3,
name: "Vitamin A, IU",
quantity: 27.9
}];
var dayTotals = arrayIngredients.reduce(function(result, next) {
if (!result.hasOwnProperty(next.name))
result[next.name] = {
totalQuantity: 0
};
result[next.name].totalQuantity += next.quantity;
return result;
}, {}); // this empty object is injected as "result" argument
// in the Array.prototype.reduce callback #1 parameter
document.getElementById("result").textContent = JSON.stringify(dayTotals);
<div id="result"></div>
相关文章:
- 在函数中添加数组元素的数值
- 访问JSON对象内部的数组元素
- Mongoose-在更新中删除数组元素
- 如何通过JavaScript更改数组元素及其值
- JavaScript:通过其他数组元素的索引访问ArrayElement?array[array[0]返回undefin
- 通过javascript函数取消设置php数组元素
- 在 jquery 中,如何通过索引[“键”] 或值删除数组元素
- 从 C# 访问 JavaScript 数组元素(通过 WebBrowser)
- 如何通过Firebase数据库中的AngularJS在点击时获取数组元素的唯一ID
- 通过循环变量引用Javascript数组元素
- 通过JSON对象键访问javascript数组元素
- 在一个对象的Javascript数组中,如果一个特定的数组元素本身就是一个对象数组,我如何通过名称/ID来定位该元素
- 通过深度索引访问数组元素
- 通过与另一个数组javascript匹配来覆盖数组元素值
- PHP数组作为JavaScript -通过键访问JavaScript元素
- Javascript通过值直接访问2d数组元素
- 通过引用交换对象中的数组元素
- Javascript -通过键获取特定JSON数组元素中属性的值
- 通过文本框获取数组元素(JS验证)
- 使Javascript数组元素可通过附加键访问