对所有数字求和

时间:2019-03-03 22:48:54

标签: javascript sum

这是我的代码

   $(document).ready(function () {
var interval = 10000;
var refresh = function() {
$("#nodes").empty();
$.getJSON("https://tankionline.com/s/status.js",function(json){
  let sum = json.nodes.reduce((acc, obj)=>(val+obj.online+obj.inbattles), 0);
  console.log(sum);
  console.log("updated");
  var nodes = Object.keys(json.nodes).length;
   for (var i = 0; i < nodes; i++) {
     var num = i + 1;
     var main = 'main.c' + num;
     $("#nodes").append(`
       <tr>
         <th scope="row">${num}</th>
         <td> ${json.nodes[main].online} </td>
         <td> ${json.nodes[main].inbattles} </td>
         <td> ${json.nodes[main].online - json.nodes[main].inbattles} </td>
       </tr>
       `)
    }
});
setTimeout(function() {
  refresh();
    },
  interval);
    }
  refresh();
});

在json文件中包含20台服务器,并且每台服务器中都有一个在线玩家值和一个战斗玩家值。 我想获得在线玩家的总和和战斗玩家的总和。 为了存档,我尝试在循环外部和循环内部创建一个数组,将值推入该数组,然后求和。 但是我认为这不是最好的解决方案,所以我想知道这是最好的解决方法

1 个答案:

答案 0 :(得分:0)

这是一个有效的示例:

$(function() {
  setInterval(function() {
    console.log("Updating...");
    $.getJSON("https://tankionline.com/s/status.js", function(data) {
      var totalOnline = Object.values(data.nodes).reduce((total, obj) => (total + obj.online), 0);
      var totalInBattles = Object.values(data.nodes).reduce((total, obj) => (total + obj.inbattles), 0);
      $("#online").val(totalOnline);
      $("#inBattles").val(totalInBattles);
    });
  }, 3000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<label>Online:</label>
<input type="number" id="online" />

<label>In Battles:</label>
<input type="number" id="inBattles" />