2017-01-24 5 views
0

Я некоторое время искал сеть net, пытаясь найти способ суммирования значений json-массива с помощью рулей с использованием + = или - =, если условие выполнено. однако я не могу найти никаких рекомендаций относительно того, как правильно это сделать. может ли кто-нибудь направить меня на то, как преобразовать эту итерацию в помощник руля?handlebars + =, - = если условие выполнено

var table = $("#table tbody"); 
$.getJSON("front-end/ajax/bethistory.php", function(data) { 
    var value = 0; 
    $.each(data, function(a, b) { 
     if (b.action == "win") { 
      value += parseFloat(b.coins); 
     } else if (b.action == "lose") { 
      value -= parseFloat(b.coins); 
     } 
     var tbody = $("<tr/>").append($("<td/>").html(b.action), $("<td/>").html(value)) 
     table.append(tbody); 
    }); 
}); 

что-то вроде этого?

var value = 0; 
Handlebars.registerHelper("this_val", function(a,b) { 

     if (a == "win") { 
      value += parseFloat(b); 
     } else if (a == "lose") { 
      value -= parseFloat(b); 
     } 

     return value; 

}); 
+0

не может понять ваш вопрос. Вы об этом говорите? значение + = (b.action === "win" ?: parseFloat (b.coins): parseFloat (b.coins) * (-1) ); – celerno

ответ

1

для тех, кому это нужно. я смог выяснить это thanks to this post

Handlebars.registerHelper("compute", function(array, options) { 

     var new_array = "", 
     value = 0, 
     count = array.length; 

     for (var i = 0; i < array.length; i++) { 

      var coins = Number(array[i]['coins']), 
      action = array[i]['action']; 

      if (action == "win") { 
       if (coins > 0) { 
        value += coins; 
       } 
      } else if (action == "lose") { 
       if (coins > 0) { 
        value -= coins; 
       } 
      } 

      array[i]['running'] = value; 
      new_array += options.fn(array[i]); 
     } 
     return new_array; 
    });