Есть код который складывает данные из массивов
var data = [{ id: 100, chance: 10 }, { id: 100, chance: 30 }, { id: 200, chance: 10 },
{ id: 300, chance: 5 }, { id: 200, chance: 30 }, { id: 100, chance: 15 }];
var result = {};
for (var element of data)
{
if (result[element.id] == undefined)
result[element.id] = 0;
result[element.id] += element.chance;
}
for (var id in result)
console.log("id: " + id + ", chance: " + result[id]);
Этот код выполняется только один раз после загрузки страницы - пусть это будет socket.on('load_data',...)
Но на страницу так же постоянно приходит и другой сокет запрос socket.on('bet_data',...)
Так вот..
Вместе с bet_data приходит data в таком виде data = { id: 400, chance: 10 }.
События получается выглядят вот так:
socket.on('load_data', function(data) {
var data = [{ id: 100, chance: 10 }, { id: 100, chance: 30 }, { id: 200, chance: 10 },
{ id: 300, chance: 5 }, { id: 200, chance: 30 }, { id: 100, chance: 15 }];
var result = {};
for (var element of data)
{
if (result[element.id] == undefined)
result[element.id] = 0;
result[element.id] += element.chance;
}
for (var id in result)
console.log("id: " + id + ", chance: " + result[id]);
});
socket.on('bet_data', function(data) {
var data = { id: 400, chance: 10 };
// тут нужно сделать сделать обновление переменной result, и (занести/добавить к существующему) новый результат.
});
Надеюсь объяснил понятно..
Простой вариант - сделать переменную result глобальной и вынести код добавления в result в функцию:
var result = {};
function addToResult(id, chance)
{
if (result[id] == undefined)
result[id] = 0;
result[id] += chance;
}
//socket.on('load_data'
setTimeout(function() {
var data = [{ id: 100, chance: 10 }, { id: 100, chance: 30 }, { id: 200, chance: 10 },
{ id: 300, chance: 5 }, { id: 200, chance: 30 }, { id: 100, chance: 15 }];
for (var element of data)
addToResult(element.id, element.chance);
}, 10);
//socket.on('bet_data'
setTimeout(function() {
var data = { id: 400, chance: 10 };
addToResult(data.id, data.chance);
//проверка результата
for (var id in result)
console.log("id: " + id + ", chance: " + result[id]);
}, 100);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей