MongoDB如何批量递增嵌套文档中的所有数值?
如何一次性递增对象中所有数值属性的值?
针对你提到的 memberAges 这类键可能动态变化的对象,要一次性给所有数值属性递增,我整理了几个实用的实现思路:
思路1:用 Object.keys() 遍历修改原对象
这是最直接的方案,先拿到对象的所有键名,循环每个键对应的值做递增:
const memberAges = { alice: 20, bob: 18, cathy: 25 }; Object.keys(memberAges).forEach(key => { // 加个类型判断,避免非数值属性搞出问题 if (typeof memberAges[key] === 'number') { memberAges[key]++; } }); // 处理后结果:{ alice: 21, bob: 19, cathy: 26 }
这个方法会直接修改原对象,适合不需要保留原数据的场景。
思路2:生成新对象(不修改原数据)
如果想保留原对象,用 Object.entries() 和 Object.fromEntries() 组合生成新对象更稳妥:
const memberAges = { alice: 20, bob: 18, cathy: 25 }; const updatedAges = Object.fromEntries( Object.entries(memberAges).map(([key, value]) => { return [key, typeof value === 'number' ? value + 1 : value]; }) ); // updatedAges 是新对象,原 memberAges 完全不受影响
这种写法是函数式风格,没有副作用,在需要纯数据处理的场景里很常用。
思路3:兼容旧环境的 for...in 循环
如果要支持老浏览器(比如IE),就用传统的 for...in 遍历,记得加上 hasOwnProperty 判断避免遍历到原型链属性:
const memberAges = { alice: 20, bob: 18, cathy: 25 }; for (const key in memberAges) { if (memberAges.hasOwnProperty(key) && typeof memberAges[key] === 'number') { memberAges[key]++; } }
你可以根据自己的场景选:要改原对象用思路1或3,要新对象用思路2就行~
内容的提问来源于stack exchange,提问作者wong2
相关产品推荐
相关产品推荐

