【问题标题】:Best way to create or add number on object property在对象属性上创建或添加数字的最佳方法
【发布时间】:2018-03-05 21:44:56
【问题描述】:

当我们有一个具有数字属性的对象时,它可以用作累加。在 ES6 javascript 中处理“累积/创建”案例的最佳方法是什么?最简单的方法是:

if (obj.foo)) {
    obj.foo += value;
}
else {
    obj.foo = value;
}

或

obj.foo = obj.foo ? obj.foo + value : value;

有改进的想法吗?谢谢!

【问题讨论】:

  • 像var obj = {foo:0}一样初始化foo怎么样,那么你就不用担心foo是否存在?
  • @Sphinx 这是个好建议。如果属性是动态的,这个问题会更合适,因此您不能预先创建所有属性。
  • @Barmar 是的,就我而言,它是这个新属性的动态键

标签: javascript object ecmascript-6 properties numbers


【解决方案1】:

检查当前值或使用0 初始化然后添加。

obj.foo = (obj.foo || 0) + value;

【讨论】:

    【解决方案2】:

    由于 undefined + number => NaN 和 NaN 的布尔强制为 false !!NaN === false 那么:

    obj.foo + 1 只能是 NaN 或 number,所以你可以简单地这样做:

    obj.foo = obj.foo + value || value; // if obj.foo + 1 is NaN, then the result is 1.
    

    尽管这看起来很简单,但请记住,由于隐式强制 0 和 NaN 都是错误的:!!0 === !!NaN,因此仅推荐用于 0 以外的正数。

    在这种情况下,如果 obj.foo + value === 0 上面的函数将是 1 而不是 0。

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多