2013-12-13 2 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 в качестве значения и так далее.

Идеи?

Update и мое решение

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

ваш почтовый код shoulkd, относящийся к выходу, который вы получаете, каждый цикл –

+0

Я думаю, что в этом случае это станет неясным. Это легко понять. Loop и make hash. –

ответ

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. Надеюсь, это приблизится к вашему требованию.

Edit:

jsonObject[key] = value + parseInt(jsonObject[key] == undefined ? 0 : jsonObject[key]) 

Update: выше фрагмент кода добавляет значение, если есть дубликат ключа, то он будет разбирать вниз соответствующее значение в целое, а затем добавить его к уже уникальный ключ, присутствующего в объект json. Итак, если нет дублирующего ключа, тогда он просто добавит 0, иначе будет объявлено значение.

+0

проблема в том, что если есть дубликаты ключей, это превысит последнее значение. –

+0

да, что ОП спросил, у него есть один ключ от суммы значений. –

+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/

Надеюсь, вы можете применить эту идею в свой собственный код.

Смежные вопросы