为每个循环构建jQuery的哈希

时间:2013-12-13 11:51:33

标签: javascript jquery

我使用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)
}

3 个答案:

答案 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/

希望您可以将此想法应用到您自己的代码中。