Сумма всех чисел javascript - PullRequest
0 голосов
/ 04 марта 2019

Это мой код

   $(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 голосов
/ 04 марта 2019

Вот рабочий пример:

$(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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...