getelementbyname javascript

javascript - getelementbyname - innerhtml



Elemento de incremento de objeto Javascript si no existe (6)

¿Hay una manera estándar de hacer esto? Sé cómo en Python, pero en Javascript, ¿cuál es la mejor manera de agregar una clave a un diccionario si primero verifica si la clave ya existe? De lo contrario, agréguela con un valor de 1, si SÍ existe, solo incremente la cuenta actual.

Algo así como este pseudo-código:

var dict = {}; var new_item = "Bill" If new_item not in dict: dict[new_item] = 1 else: dict[new_item] += 1


¿Qué tal esto?

dict[key] = (dict[key] || 0) + 1;


El modo @ snak es bastante limpio y el || El operador lo hace obvio en términos de legibilidad, así que eso es bueno.

Para completar y trivialidad, hay una forma de bit a bit que también es bastante hábil:

dict[key] = ~~dict[key] + 1;

Esto funciona porque ~~ convertirá muchas cosas no numéricas en 0 después de forzar a Number. Sé que no es una explicación muy completa, pero aquí están los resultados que puede esperar para algunos escenarios diferentes:

~~(null) 0 ~~(undefined) 0 ~~(7) 7 ~~({}) 0 ~~("15") 15


En más esfuerzo no dolerá.

Debe verificar si el objeto tiene una propiedad propia con el nombre new_item primero. Si no lo hace, agréguelo y establezca el valor en 1. De lo contrario, incremente el valor:

var dict = {}; var new_item = "Bill" dict[new_item] = dict.hasOwnProperty(new_item)? ++dict[new_item] : 1;

Lo anterior es un poco inútil, ya que si la propiedad existe, la incrementa y luego se asigna el nuevo valor. Una alternativa más larga, pero posiblemente más eficiente, es que si la propiedad no existe, agréguela con un valor de cero y luego auméntela:

if (!dict.hasOwnProperty(new_item)) { dict[new_item] = 0; } ++dict[new_item];


Puede utilizar el operador ternario (? :) de esta manera:

dictionary[key] ? dictionary[key].value += 1 : dictionary[key] = {value: 1};


Puedes hacer esto de muchas maneras. En general, si desea saber si un Object tiene una clave, use el modificador in con el nombre de la clave. Esto se ve como

var key = "key name"; var dict = {}; var hasKey = (key in dict);

Aunque puede verificar si un valor se establece simplemente probando si no está undefined . Esto es que en JavaScript, si no tiene un valor inicializado y lo envía a través de una sentencia if, actuará como falso. Que se parece a

var dict = {}; if(dict["key"]) { print("key: " + dict[key]); } else { print("Missing key"); }


Su pseudocódigo es casi idéntico al código real:

if (key in object) { object[key]++; } else { object[key] = 1; }

Aunque por lo general escribo:

if (!(key in object)) { object[key] = 0; } object[key]++;