我循环遍历这样的数组:
_.each(user.groupings, function(grouping){
conversions[i][grouping]++;
})
}
有时,conversions[i][grouping]
已经设定,有时候不是。当它不是时,它根本不会被设置为1,而是NaN。我知道我能做到:
_.each(user.groupings, function(grouping){
if(conversions[i][grouping]){
conversions[i][grouping]++;
}
else{
conversions[i][grouping] = 1
}
})
}
但是有简写吗?
答案 0 :(得分:1)
这样的事情:
_.each(user.groupings, function(grouping){
conversions[i][grouping] = (conversions[i][grouping] || 0) + 1;
})
}
这类似于C#null合并运算符:
答案 1 :(得分:1)
我首选的语法是:
conversions[i][grouping] = conversions[i][grouping] ? conversions[i][grouping] + 1 : 1;
我认为这比||更具可读性选项,但我想这是个人喜好。如果您只是在尽可能少的代码之后,这将起作用:
conversions[i][grouping] = ++conversions[i][grouping] || 1;
答案 2 :(得分:0)
你有没有试过像
这样的东西conversion[i][grouping] = (conversion[i][grouping] || 0) + 1;
此代码:
(conversion[i][grouping] || 0)
...如果数组中的值为“truthy”,则会产生值;如果数组中的值为“falsey”,则会产生0
(因为JavaScript的||
运算符字的方式) 。假名值为undefined
,null
,0
,NaN
,""
,当然还有false
;真实的价值观是其他一切。因此,如果conversion[i][grouping]
可能是undefined
或null
,并且您希望它在增量后最终成为1
,我们会使用||
将其转换为{ {1}}之前向其添加0
并将结果分配回条目。