繁体   English   中英

JavaScript:如何增加对象属性

[英]JavaScript : How to Increment a object attribute property

我正在尝试增加 JavaScript 对象的属性属性。 我的代码如下所示

var objVal = { "date" : "2019-07-01", "count" : "0" };
var updateObj = { "date" : "", "count" : Number(count) + 1 };
for (var key in updateObj) {
  objVal[key] = updateObj[key];
}

console.log(JSON.stringify(objVal));

我想清空日期并将count属性增加1

任何建议都非常感谢。

您可以使用映射器函数而不是update对象中的值:

 var objVal = { "date": "2019-07-01", "count": "0" }; var updateObj = { "date": "", "count": count => Number(count) + 1 }; for (var key in updateObj) { if (typeof updateObj[key] === 'function') { objVal[key] = updateObj[key](objVal[key]); } else { objVal[key] = updateObj[key]; } } console.log(JSON.stringify(objVal));

现在,如果更新对象的属性是一个函数,这将使用旧值作为参数调用它,并使用其返回值更新对象。

如果非函数作为更新对象的键存在,则此代码的行为与您的类似。

如果您想将objVal的属性objVal为函数,则需要在updateObj放置一个函数返回函数

而不是计数使用初始对象的计数属性

 var objVal = { "date" : "2019-07-01", "count" : "0" }; var updateObj = { "date" : "", "count" : Number(objVal['count']) + 1 }; for (var key in updateObj) { objVal[key] = updateObj[key]; } console.log(JSON.stringify(objVal));

试试下面的代码:

 var objVal = { "date" : "2019-07-01", "count" : "0" }; objVal["count"] = (parseInt(objVal["count"])+1).toString() console.log(JSON.stringify(objVal));

你必须像这样改变你的代码

 var objVal = {"date" : "2019-07-01", "count" : "0" }; objVal.date=""; objVal.count=Number(objVal.count)+1 console.log(JSON.stringify(objVal));

我觉得您正在寻找一个更动态的解决方案,如下所示:

 const objVal = {"date": "2019-07-01", "count": "0"}; const updateObj = { "date": "empty", "count": "increment", // maybe you'll come up with more action types in the future... }; for (const key in updateObj) { const action = updateObj[key]; if (action === 'empty') { objVal[key] = ''; continue; } if (action === 'increment') { objVal[key] = (Number(objVal[key]) + 1).toString(); continue; } // handle any other actions... } console.log(objVal);

它类似于 FZs 的答案,但它允许您更轻松地存储updateObj (在数据库/JSON 文件中)。

为了扩展支持,你可以使用这样的东西。

 var objVal = { "date" : "2019-07-01", "count" : "0" }; var keysToEmpty = ["date"]; var keysToNumber = ["count"]; for (var key in objVal) { if (keysToEmpty.includes(key)) { objVal[key] = ""; } else if (keysToNumber.includes(key)) { objVal[key] = Number(objVal[key]) + 1; } } console.log(JSON.stringify(objVal));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM