Я пытаюсь добавить ключ к объекту, если он не существует, или увеличить его количество, если оно уже присутствует. Следующий код правильно добавляет новый ключ, если он не существует, но не увеличивает его количество, если оно уже выполняется. Вместо этого он возвращает {UniqueResult1:NaN, UniqueResult2:NaN}
.
let detectionHash = {};
function onDetected(result) {
detectionHash[result.code]++;
if(detectionHash[result.code] >= 5) {
//here where I want to be
}
}
Как увеличить количество ключей, если оно уже существует?
Вы можете взять значение или значение по умолчанию, равное нулю, и добавить его.
Не существующее свойство возвращает undefined
, что является ложным. Следующий логический ИЛИ ||
проверяет это значение и принимает следующее значение нуля для приращения.
detectionHash[result.code] = (detectionHash[result.code] || 0) + 1;
Если вы запрашиваете ключ, который не существует, он будет иметь тип "undefined":
var abc=[];
abc[5] = 'hi';
console.log(typeof abc[3]); //it will be "undefined", as a string (in quotes)
Так:
let detectionHash = {};
function onDetected(result) {
//does the key exists?
if (typeof detectionHash[result.code] !== "undefined")
detectionHash[result.code]++; //exist. increment
else
detectionHash[result.code]=0; //doesn't exist. create
if(detectionHash[result.code] >= 5) {
//here where I want to be
}
}