Есть код который складывает данные из массивов
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);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день! Пытаюсь перехватить ЛЮБОЕ onclick событие в WKWebViewВесь сайт работает посредством js запросов, так что в func webView(_ webView: WKWebView, decidePolicyFor...
Parse error: syntax error, unexpected '{' in X:\home\localhost\www\kbm\adm\event-listenerphp on line 17