有没有办法将++添加到有时为null的变量?

时间:2014-12-08 10:36:47

标签: javascript

我循环遍历这样的数组:

_.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
    }
  })
}

但是有简写吗?

3 个答案:

答案 0 :(得分:1)

这样的事情:

_.each(user.groupings, function(grouping){
    conversions[i][grouping] = (conversions[i][grouping] || 0) + 1;
  })
}

这类似于C#null合并运算符:

Is there a "null coalescing" operator in JavaScript?

答案 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的||运算符字的方式) 。假名值为undefinednull0NaN"",当然还有false;真实的价值观是其他一切。因此,如果conversion[i][grouping]可能是undefinednull,并且您希望它在增量后最终成为1,我们会使用||将其转换为{ {1}}之前向其添加0并将结果分配回条目。