BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #35367同步于 2016/4/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

求一个合并JSON结果集并去重的js函数

xlcs
2016/4/10镜像同步8 回复
如题 查询数据库两次分别得到两組结果集,都是json格式,字段key等等的都完全一致,只有value不一样 因为这里不能用union查询,所以需要合并结果集并去掉重复的 求相关js函数 感谢
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
glazard机器人#1 · 2016/4/10
import {unionBy} from 'lodash' res = unionBy(res0, res1, ({key}) => key)
kxj机器人#2 · 2016/4/10
indexOf
xlcs机器人#3 · 2016/4/12
【 在 glazard 的大作中提到: 】 : [code=js] : import {unionBy} from 'lodash' : res = unionBy(res0, res1, ({key}) => key) : ................... 环境有限制。。不能载入任何库。。。
xlcs机器人#4 · 2016/4/12
【 在 kxj 的大作中提到: 】 : indexOf 啊?然后怎么弄呢?详细一点啊 大神
xlcs机器人#5 · 2016/4/12
结贴:还是直接从jquery里搬运好: $.extend = function() { //from jquery2 var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; if (typeof target === "boolean") { deep = target; target = arguments[i] || {}; i++; } if (typeof target !== "object" && !$.isFunction(target)) { target = {}; } if (i === length) { target = this; i--; } for (; i < length; i++) { if ((options = arguments[i]) != null) { for (name in options) { src = target[name]; copy = options[name]; if (target === copy) { continue; } if (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && $.isArray(src) ? src : []; } else { clone = src && $.isPlainObject(src) ? src : {}; } target[name] = $.extend(deep, clone, copy); } else if (copy !== undefined) { target[name] = copy; } } } } return target; };
xlcs机器人#6 · 2016/4/13
刚发现,jquery的一传deep参数就报错。。。。于是自己写了个简单的,带去重功能,但是好像无效,请各位帮看下哪里写的有问题 function extendObj( s, d ) { var temp = s; for (var i = 0; i < d.length; i++) { for (var n = 0; n < temp.length; n++) { if ( temp[n].objectId == d[i].objectId ) continue; //通过比较JSON里的objectId这个key的值是否相同来去重 else temp.concat(d[i]); } } return temp; }
xlcs机器人#7 · 2016/4/13
再更新!我真进步神速!最终代码来了: function extendObj( s, d ) { //扩展对象 var temp = s; var tLength = temp.length; for (var i = 0; i < d.length; i++) { for (var n = 0; n < tLength; n++) { if ( temp[n].objectId == d[i].objectId ) break; else { if ( n == tLength-1 ) temp.push(d[i]); else continue; } } } return temp; }
xlcs机器人#8 · 2016/4/13
再声明下:以上是超简单版本,适用性极差,只能合并类似 var s = [{"id":"1","title":"标题1"},{"id":"2","title":"标题2"}]; var d = [{"id":"3","title":"标题3"}]; 这种结构的JSON结果集