如何添加检查以查看键是否已存在,如果存在,则增加值,如果不存在,则设置初始值?
像这样的伪代码:
var dict = {};
var new_item = "Bill"
If new_item not in dict:
dict[new_item] = 1
else:
dict[new_item] += 1
如何添加检查以查看键是否已存在,如果存在,则增加值,如果不存在,则设置初始值?
像这样的伪代码:
var dict = {};
var new_item = "Bill"
If new_item not in dict:
dict[new_item] = 1
else:
dict[new_item] += 1
dict[key] = (dict[key] || 0) + 1;
@snak 的方式非常干净,||
操作员在可读性方面很明显,所以这很好。
为了完整性和琐事,这种按位方式也很漂亮:
dict[key] = ~~dict[key] + 1;
这是有效的,因为在强制转换为 Number 后~~
会将许多非数字的东西变成。0
我知道这不是一个非常完整的解释,但以下是一些不同场景的输出:
~~(null)
0
~~(undefined)
0
~~(7)
7
~~({})
0
~~("15")
15
您的伪代码几乎与实际代码相同:
if (key in object) {
object[key]++;
} else {
object[key] = 1;
}
虽然我通常写:
if (!(key in object)) {
object[key] = 0;
}
object[key]++;
您可以像这样使用三元运算符 (?:):
dictionary[key] ?
dictionary[key].value += 1 :
dictionary[key] = {value: 1};
您应该首先检查对象是否具有带有new_item名称的自己的属性。如果不是,则添加它并将值设置为 1。否则,增加值:
var dict = {};
var new_item = "Bill"
dict[new_item] = dict.hasOwnProperty(new_item)? ++dict[new_item] : 1;
上面有点浪费,好像属性存在,它增加它,然后将新值分配给它自己。一个更长但可能更有效的替代方法是,如果该属性不存在,则将其添加为零值,然后将其递增:
if (!dict.hasOwnProperty(new_item)) {
dict[new_item] = 0;
}
++dict[new_item];
你可以通过很多方式做到这一点。一般来说,如果你想知道Object
一个键是否有键,你可以使用in
带有键名的修饰符。这看起来像:
var key = "key name";
var dict = {};
var hasKey = (key in dict);
尽管您可以通过简单地测试是否设置了值来检查它是否设置undefined
。这就是在 JavaScript 中,如果您没有初始化一个值并通过 if 语句发送它,它将充当 false。看起来像:
var dict = {};
if(dict[key]) {
print("key: " + dict[key]);
} else {
print("Missing key");
}