Javascript 有没有办法添加++;对于有时为空的变量?
我循环遍历一个数组,如下所示:Javascript 有没有办法添加++;对于有时为空的变量?,javascript,Javascript,我循环遍历一个数组,如下所示: _.each(user.groupings, function(grouping){ conversions[i][grouping]++; }) } _.each(user.groupings, function(grouping){ conversions[i][grouping] = (conversions[i][grouping] || 0) + 1; }) } 有时,转换[i][grouping]已设置,有时未设置。如果不是
_.each(user.groupings, function(grouping){
conversions[i][grouping]++;
})
}
_.each(user.groupings, function(grouping){
conversions[i][grouping] = (conversions[i][grouping] || 0) + 1;
})
}
有时,转换[i][grouping]
已设置,有时未设置。如果不是,则不会根据需要将其设置为1,而是NaN。我知道我能做到:
_.each(user.groupings, function(grouping){
if(conversions[i][grouping]){
conversions[i][grouping]++;
}
else{
conversions[i][grouping] = 1
}
})
}
但是有速记吗?你试过类似的方法吗
conversion[i][grouping] = (conversion[i][grouping] || 0) + 1;
此代码:
(conversion[i][grouping] || 0)
如果数组中的值为“truthy”,则会生成数组中的值;如果数组中的值为“false”,则会生成0
(这是因为JavaScript的|
运算符的方式)。falsey值是未定义
,空
,0
,NaN
,“
,当然还有false
;真正的价值观是其他一切。因此,如果转换[i][grouping]
可能是未定义的
或空的
,并且您希望它在增量后成为1
,我们使用|
将其转换为0
,然后将1
添加到它并将结果分配回条目。类似这样的内容:
_.each(user.groupings, function(grouping){
conversions[i][grouping]++;
})
}
_.each(user.groupings, function(grouping){
conversions[i][grouping] = (conversions[i][grouping] || 0) + 1;
})
}
这类似于C#null合并运算符:
我首选的语法是:
conversions[i][grouping] = conversions[i][grouping] ? conversions[i][grouping] + 1 : 1;
我认为这比| |选项更具可读性,但我想这是个人偏好。如果您只是在寻找尽可能少的代码,这将起作用:
conversions[i][grouping] = ++conversions[i][grouping] || 1;