哈!最近做了较多的整理工作,也在赶工期,没什么内容出来。
但也是草草得发一篇。
哈!最近做了较多的整理工作,也在赶工期,没什么内容出来。
但也是草草得发一篇。
由于公司最近的某个业务
顺手解决了一下,JS程序员,一直以来避之不及的问题。
那就是对象合并。
以及对象抽取。
var obj1 = { a: { h: [50, 1,2,3], j: "hehe" } }; var obj2 = { a: { k: "KKK", h: [100, 2, 6], j: "haha" }, b: { i: "abc" } };
假设现在有这两个,js对象。
我们往往希望把他合并为,我们想要的样子,而不是简单的在第一层进行覆盖插入。
我们希望这个对象合并结果是这样:
{ "a": { "h": [1,2,3,6,50,100], "j": "haha", "k": "KKK" }, "b": { "i": "abc" } }
大家可以在一下试一下
对象1
对象2
以下即是源码:
var margeObj = function (obj1, obj2) { this.arrayUnique = function(array){ if (array instanceof Array === false) { throw "ARGEMENTS TYPE IS NOT ARRAY"; } array.sort(function (a, b) {return a - b}); var result = [array[0]]; for(var i = 1; i < array.length; i++){ if (result.indexOf(array[i]) === -1) { result.push(array[i]); } } return result; } this.jsonSortByKeys = function (json) { var keys = Object.keys(json); keys.sort(); var result = {}; for (var i = 0; i < keys.length; i++) { result[keys[i]] = json[keys[i]]; } return result; }; this.checkVarBothType = function (var1, var2) { if (var1 instanceof Array && var2 instanceof Array) { return "array"; } if (var1 instanceof Array === false && var2 instanceof Array === false && var1 instanceof Object && var2 instanceof Object) { return "object"; } if (var1 instanceof Function && var2 instanceof Function) { return "function"; } if (var1 instanceof String && var2 instanceof String) { return "string"; } if (var1 instanceof Number && var2 instanceof Number) { return "number"; } if (var1 instanceof Boolean && var2 instanceof Boolean) { return "boolean"; } return "different"; }; this.margeObjLoop = function (obj1, obj2) { if (checkVarBothType(obj1, obj2) !== 'object') { throw "ARGEMENTS TYPE IS NOT OBJECT"; } var cell1 = jsonSortByKeys(obj1); var cell2 = jsonSortByKeys(obj2); for (var i in cell2) { if (checkVarBothType(cell1[i], cell2[i]) == "array") { cell1[i] = arrayUnique(cell1[i].concat(cell2[i])); continue; } if (checkVarBothType(cell1[i], cell2[i]) == "object") { cell1[i] = jsonSortByKeys(margeObjLoop(cell1[i], cell2[i])); continue; } cell1[i] = cell2[i]; } return jsonSortByKeys(cell1); }; return this.margeObjLoop(obj1, obj2); };
哈!阿里云自从有了Ubuntu 16.04,我们这种14.04用了很久的人,都一直趋之若鹜。本来是想新租一台服务器来搞,不过感觉都好贵,这台首购优惠的机,性能也很差,并且上面有我的BLOG以及数据库,一直也不敢动。
迁移的成本太高啦!!!
为啥这么说呢?上面的所有项目,都是我自己写的,框架也是,数据库表结构也是。
如今狠了狠心。直接就给干了,当初练手用的东西,也没有必要多留了。
回想起来,是连一张截图也没有存呢!翻番几年前的朋友圈,兴许能翻出来。
不过,既然要搞,就搞彻底吧,之前自己写的锉货扔了也就扔了。毕竟还是要向前看嘛。
博客系统,我挑来选去,从Odoo,GitLab,我甚至想着搞个Dz的个人空间来当博客。
搭了一堆环境,折腾了一大圈!始终都觉得少点什么,或者感觉哪不合适。最终还是回归,这里吧
可以说是将我带入互联网的地一个玩意儿,虽然是用,全世界最好的语言写的。但还是要感谢它。
忆当年,申请个免费的空间,上传个WordPress Bla...Bla...Bla...Bla.......
欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!