有没有办法添加/减去与另一个对象具有相同的字段的JSON内的所有字段?
我有一个Mongoose.js模式,看起来像这样:
{ "City": String, "Year": String, "Population": Number, "Blah": Number, "Nested": { "Something": Number, "More stuff": Number } }
是否有一个方便/最好的方法来采取这些领域的两个对象,并添加他们的数字领域,还是我需要写一个function,真正进入和做到这一点?
我在这里处理一个非常大的模式。 如果我写一个函数来做到这一点,我将不得不手动维护它; 这意味着如果我改变架构,我将不得不手动改变我定义的成员函数来添加东西。
很简单。 这是一个通用的计算function,从schema1中减去schema2并返回一个新的对象。
它只是为了匹配相同级别的对象。 如果一个模式有一个属性,但另一个没有被忽略。
如果他们是数字和有效数字的schema1 – schema2
如果他们是对象,我们需要更深入。
在所有types的声明中,schema1是领先的,并假定schema2将会遵循。 在这种情况下,我的可怕的灾难和绝望会等待你。 testing所有你想要的types是由你自己决定的。 我只build立了一些安全措施。
json1 = { City: "Amsterdam", Year: "2000", Population: 100, brutProduce: 10000, losses: { devalue: 10000, damages: 1000 } } json2 = { City: "Amsterdam", Year: "2003", Population: 100, brutProduce: 10000, losses: { devalue: 10000, damages: 1000 } } //Only cacluate number types function calculate(schema1,schema2) { var ret = {}; for (var key in schema1) { if (schema1.hasOwnProperty(key) && schema2.hasOwnProperty(key)) { var obj = schema1[key]; var obj2 = schema2[key] if(typeof obj === "number" && !isNaN(obj) && typeof obj2 === "number" && !isNaN(obj2)) { ret[key] = obj-obj2; } else { if(typeof obj === 'object' && typeof obj2 === 'object') { ret[key] = calculate(obj,obj2); } else { ret[key] = obj; } } } } return ret; } test = calculate(json1,json2); console.log(test);
Please check console for the output. thank you.
- 如果我们在任何对象的Node.js中扩展原型,会出现什么问题?
- web.js和npm express – 警告:express.createServer()已被弃用
- 最好的方法来抓取混合内容的一组网页
- Braintree与沙盒中的JavaScript SDK tokenizeCard返回“无法标记卡”。
- Node.js能和PHP有相同的function,还是应该一起使用?
- 克隆和nightmarejs
- 将缓冲的文件数据转换为Json对象:express-fileupload
- node-xmpp-client无法从浏览器连接到node-xmpp-server
- 如何使用koa-bodyparser在koa中获取查询string?