![](/img/trans.png)
[英]how to increment property in an object with a method in that object 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.