2013-12-13 25 views
0

我運行了幾個div與jQuery .each函數。構建一個jQuery每個循環的哈希

用的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

you shoulkd與您得到的輸出相關的郵政編碼,每個循環 –

+0

我認爲,在這種情況下,它會使其不清楚。這是一個簡單的概念。循環並製作哈希。 –

回答

0

首先,糾正你的對象,使鍵作爲字符串:

a = {'0.24': 720, '0.1': 100} 

二:你能告訴一個代碼段與yhour每個循環?

+0

只要我使用[]語法'h = {1:100,2:200}''h.1 => SyntaxError:意外的數字''h [1] => 100',就不需要更正對象了。 –

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,否則它將加值。

+0

唯一的問題是如果有重複鍵,它會覆蓋最後一個值。 – 2013-12-13 12:05:00

+0

是的,OP問,他有一個鍵與值的總和 –

+0

@remyabel好心檢查我的編輯,現在函數將爲現有鍵的值增加值 –

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/

希望你可以把這一概念應用到你自己的代碼。