这可能是一个简单的问题,但是我在尝试向对象当前值添加值时遇到问题,我需要使用密钥来访问该对象。
大多数,并非所有值和对象值都是字符串格式。我试图解析int caluclate两个元素并替换对象。
尝试:
if(object[key] == undefined)
{
object[key] = 0;
}
object[key] = parseInt(object[key]) + parseInt(value);
答案 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;