我使用jQuery .each函数运行了几个div。
使用console.log,我得到了这个输出
0.24 240,
0.1 100,
0.24 240,
0.24 240,
每行的第一个数字是一个因子,最后一个是乘法的总和
我希望在每个函数运行时创建这样的哈希
a = {0.24: 720, 0.1: 100}
将数字0.24作为关键字,然后将每条0.24行的第二个数字相加作为值,依此类推。
想法?
更新和我的解决方案
jQuery.fn.myFunction = function(){
var hash = {}
this.each(function(index, element) {
var key = var key = $(element).attr("data-key");
var value = $(element).attr("data-value");
if (hash.hasOwnProperty(key)){
hash[key] = hash[key] + value
}else{
hash[key] = value;
}
});
console.log(hash)
}
答案 0 :(得分:1)
我认为你有关键和价值,但如果你提供至少javascript你会更好。
var jsonObject = {}
function makeObject(key,value)
{
jsonObject[key] = value + parseInt(jsonObject[key] == undefined ? 0 : jsonObject[key]);
jsonObject[key] = value;
}
在循环中调用此函数,之后jsonObject将包含所需的Json对象。我希望这接近你的要求。
编辑:
jsonObject[key] = value + parseInt(jsonObject[key] == undefined ? 0 : jsonObject[key])
更新:以上代码段正在添加该值,如果有重复键,则会将相应的值解析为整数,然后将其添加到json对象中已存在的唯一键中。 因此,如果没有重复的密钥,那么它只会添加0,否则它将附加值。
答案 1 :(得分:0)
首先纠正你的对象,并将键设为字符串:
a = {'0.24': 720, '0.1': 100}
第二:你能用yhour每个循环显示一个代码片段吗?
答案 2 :(得分:0)
以下是一些代码,用于说明您可以采取的方法:
var input = [{"factor":"0.24", "value": 240},
{"factor":"0.1", "value": 100},
{"factor":"0.24", "value": 240},
{"factor":"0.24", "value": 240}];
var result = {};
for (var i = 0; i < input.length; i++) {
var current = input[i];
if (typeof result[current.factor] === 'undefined') {
result[current.factor] = current.value;
} else {
result[current.factor] += current.value;
}
}
console.log(result);
在这里看到:http://jsfiddle.net/6ZA4f/
希望您可以将此想法应用到您自己的代码中。