这是我的代码
$(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台服务器,并且每台服务器中都有一个在线玩家值和一个战斗玩家值。 我想获得在线玩家的总和和战斗玩家的总和。 为了存档,我尝试在循环外部和循环内部创建一个数组,将值推入该数组,然后求和。 但是我认为这不是最好的解决方案,所以我想知道这是最好的解决方法
答案 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" />