如何为对象添加值当前值

时间:2015-11-22 12:04:26

标签: javascript object

这可能是一个简单的问题,但是我在尝试向对象当前值添加值时遇到问题,我需要使用密钥来访问该对象。

大多数,并非所有值和对象值都是字符串格式。我试图解析int caluclate两个元素并替换对象。

  • 有更优雅的方法来实现这个目标吗?
  • 如何阻止int解析int,出现这种情况?

尝试:

if(object[key] == undefined)
{
   object[key] = 0;
}
object[key] = parseInt(object[key]) + parseInt(value);

2 个答案:

答案 0 :(得分:2)

由于真实/虚假,你可以试试这个(作为起点):

// To satisfy Mr Wolf complaining about 'object' and/or 'key' being undefined:
var object = {};
var key = "potato";

// Then, continuing with my actual answer:
object[key] = parseInt(object[key]) || 0;
value = parseInt(value) || 0;

object[key] += value;

如果object[key]undefined或无效(IE:parseInt(object[key])返回NaN),则会收到值0。与value一样。

答案 1 :(得分:0)

你可以通过对obj [key]进行分类(如果未定义,将被赋值为0)并简单地添加" +"在值的前面,以确保它将其添加为数字而不是字符串

请参阅控制台了解输出



var obj = {}, key = 'missing';
var value = "5";

obj[key] = +(obj[key] || 0) + (+value);
console.log(obj[key]);

obj[key] = +(obj[key] || 0) + (+value);
console.log(obj[key]);




如果你真的想抽象添加和处理,我想去一个小函数(或者使用参数列表的扩展函数,如第二个例子中)更有意义。



'use strict';

var obj = {}, key = 'val', value = "5";

function sum(a, b) {
  return (+(a || 0)) + (+(b || 0));
}

function sumAll() {
  var total = 0, i, len;
  for (i = 0, len = arguments.length; i < len; i++) {
    total = sum(total, arguments[i]);
  }
  return total;
}

obj[key] = sum(obj[key], value);
console.log(obj[key]);
obj[key] = sumAll(obj[key], value);
console.log(obj[key]);
&#13;
&#13;
&#13;