使用IF语句递减Javascript对象

问题描述

enter image description here

您好,我期望obj = {a:-2},但正在获取obj = {a:0}。即使键存在obj [string [0],它似乎也没有输入if语句。

该怎么写?在不使用for in循环的情况下检查对象是否具有索引的最佳方法是什么,因为这将花费额外的O(n)时间。谢谢!

解决方法

以下内容显示了为什么未命中if语句的原因:

> obj[string[0]];
0
> obj[string[0]] == true
false
> obj[string[0]] == 0;
true
> 0 == true
false
> 0 == false
true

您可以将if语句更改为obj[string[0]] == 0,以使if语句中的代码求值。另请参阅: https://developer.mozilla.org/en-US/docs/Glossary/Falsy

告诉我们0是虚假的。

,

此处obj.a = 0,而0是javascript中的虚假值。这就是为什么它没有碰到if循环的原因。

要检查对象中是否存在键,可以使用下面的两种返回布尔值的方法。

  1. obj.hasOwnProperty(key)

  2. obj中的键

    if(obj.hasOwnProperty(x [0])){ obj [x [0]]- }