如何将一个结果列表合并到一个包含汇总的压缩对象中
How do I merge a list of results into a compacted object with totals
我正在循环一组输入。我需要把分组的总数加起来。
var compoundedArray = new Array();
holder.find(".dataset input").each(function(index) {
var val = $(this).val();
var dataType = $(this).data("type");
var localObj = {};
localObj[dataType] = val;
compoundedArray.push(localObj);
});
我有一个像这样的物体
[
{
"growth":30
},
{
"growth": 40
},
{
"other": 20
}
]
如何循环遍历对象以生成类似的东西
[
{
"growth": 70
},
{
"other": 20
}
]
如果我在初始数组对象上循环
for (var i = 0; i < compoundedArray.length; i++) {
console.log(compoundedArray[i]);
}
我该如何进行检查以确保我没有重复项,并且我可以统计结果?
我认为您对数据结构的选择有点太复杂了。试试类似的东西。
var compoundedObject = {};
holder.find(".dataset input").each(function(index) {
var val = $(this).val();
var dataType = $(this).data("type");
//Assuming all values are integers and can be summed:
if( compoundedObject.hasOwnProperty(dataType) )
{
compoundedObject[dataType] += val;
}
else
{
compoundedObject[dataType] = val;
}
});
您最终会得到一个对象,而不是一个数组。
var add=function (a,b){ a=a||0; b=b||0; return a+b};
var input=[ {growth:30},{growth:40},{other:20} ],output=[],temp={};
$.each(input,function(i,o){
var n;
for(i in o)
{n=i;break}
temp[n]=add(temp[n],o[n]);
});
$.each(temp,function(i,o){
var k={};
k[i]=o;
output.push(k)
});
在输出变量处查找输出。
不要发布太多具体的问题,这可能对其他人没有帮助。
这很有效。它是纯javascript。
var totals = {};
for (var i = 0; i < compoundedArray.length; i++) {
var item = compoundedArray[i];
for (var key in item) {
totals[key] = (totals[key] || 0) + item[key]
}
};
您可以使用for循环通过对象进行循环。如果您想删除一个项目,只需将其设置为null即可。
示例:
for(var i in compoundedArray){
for(var j in compoundedArray){
if(i == j){
compoundedArray[i] += compoundedArray[j];
compoundedArray[j] = null;
}
}
}
您可以执行以下操作:
var totals = [], tmp = {};
for (var i = 0; i < compoundedArray.length; i++) {
var obj = compoundedArray[i];
for (var j in obj) {
tmp[j] = tmp[j] || 0;
tmp[j] += obj[j];
}
}
for(var k in tmp) {
var obj = {};
obj[k] = tmp[k];
totals.push(obj);
}
请参阅此工作演示
相关文章:
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 将多个onclick压缩为一个
- 如何将此代码压缩到一个块中
- 谷歌URL缩短器API-未压缩类型错误:未定义不是一个函数
- AJAX响应提供了一个损坏的压缩(.tgz)文件
- 一个压缩文件或多个文件中的所有Javascript
- 如何将我的 JQuery 函数压缩到一个块中
- 如何将一个结果列表合并到一个包含汇总的压缩对象中
- 在Django项目中,将多个JavaScript文件合并并压缩为一个文件
- 对js文件进行gzip压缩会创建一个归档文件,而不是在文件输出上附加gz扩展名
- 我应该压缩我的多个css文件成一个为我的React js应用程序
- 我如何将所有这些函数压缩到一个Javascript中
- HTML/javascript客户端图像压缩看起来像一个合理的、万无一失的计划吗?
- 什么是一个很好的搜索压缩半径API或Node.js模块为世界
- 我如何压缩时间和所有插件到一个静态文件
- 是否有一个javascript库可以用来合并2个或更多的zip文件而不解压缩它们
- 带有Rails的动态Jquery函数-将多个函数压缩为一个
- 你能把Javascript合并成一个文件,而不需要用yui压缩器缩小它吗
- 在Angularjs客户端解压缩一个包含文件的文件夹作为内容
- 压缩一个缩小的.js文件