Tengo un objeto en blanco que necesito actualizar en la acción del usuario.
let userAction = {};Tengo varios botones en la página con ID únicos,
Me gusta: Btn1, Btn2, lo que sea
Entonces, si como usuario hago clic en Btn1, mi objeto debe actualizarse con su identificación y número de clics. Así
userAction = {btn1: 1}si hago clic en bt2, también actualizará ese objeto con su ID de esta manera:
userAction = {btn1: 1, Btn2: 1 }pero si hago clic en cualquier otro botón una vez más, debería actualizar el valor en +1. Como esto
Así que hago clic en Btn1 nuevamente... luego el objeto se verá así.
userAction = {btn1: 2, Btn2: 1 }Traté de hacerlo así, solo necesito saber si hay alguna opción mejor u optimizada para hacerlo.
let userAction = {}; $('button').click(function(){ let btnId = $(this).attr('id'); let exisitngValue = userAction[`${btnId}`]; if (btnId in userAction){ userAction[`${btnId}`] = exisitngValue+1; }else { userAction[`${btnId}`] = 1; } console.log(userAction); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="Btn1">Button 1</button> <button id="Btn2">Button 2</button> <button id="Btn3">Button 3</button> <button id="whatever">whatever</button>¿Hay alguna manera mejor de hacerlo?
Puede tomar solo la id del botón directamente sin una cadena de plantilla y asignar directamente el valor o cero y agregar uno.
let userAction = {}; $('button').click(function(){ let btnId = $(this).attr('id'); userAction[btnId] = (userAction[btnId] || 0) + 1; console.log(userAction); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="Btn1">Button 1</button> <button id="Btn2">Button 2</button> <button id="Btn3">Button 3</button> <button id="whatever">whatever</button> let userAction = {}; $('button').click(function(){ let btnId = $(this).attr('id'); userAction[btnId]=userAction[btnId] ? userAction[btnId]+1 : 1; console.log(userAction); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="Btn1">Button 1</button> <button id="Btn2">Button 2</button> <button id="Btn3">Button 3</button> <button id="whatever">whatever</button> let userAction = {}; $('button').click(function(){ let btnId = $(this).attr('id'); userAction[btnId] = userAction[btnId]+1 || 1; console.log(userAction); }); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button id="Btn1">Button 1</button> <button id="Btn2">Button 2</button> <button id="Btn3">Button 3</button> <button id="whatever">whatever</button>