使用javascript从嵌套对象中删除重复值

使用javascript从嵌套对象中删除重复值,javascript,lodash,Javascript,Lodash,我有一百万个来自不同团体的联系人。比如说 {"GROUP":[{'G1: [C1,C2,C3........C500000]}, {'G2': [C1,C2,C3........C500000,D1,D2,D3........D500000]} .....] } G1有500k触点,G2有一百万个触点,其中500k触点已经存在于G1中 我想根据条件过滤上面的组对象, “应检查已在任何组中的联系人,并将其从相应组中删除” 预期结果 {"GROUP":[

我有一百万个来自不同团体的联系人。比如说

    {"GROUP":[{'G1: [C1,C2,C3........C500000]},
             {'G2': [C1,C2,C3........C500000,D1,D2,D3........D500000]}
.....]
    }
G1有500k触点,G2有一百万个触点,其中500k触点已经存在于G1中

我想根据条件过滤上面的组对象, “应检查已在任何组中的联系人,并将其从相应组中删除”

预期结果

 {"GROUP":[{'G1: [C1,C2,C3........C500000]},
             {'G2': [D1,D2,D3........D500000]},....]
    }
在这里,团体及其联系人的人数可能会增加


使用lodash javascript实现它的最佳方法是什么?

经过一个漫长的思考过程,我为您准备了以下内容:

它会自动遍历对象/数组结构,并删除g1、g2、g3等数组中的重复字符串。。。等等

我从来没有用过lodash,所以这里是香草js

var对象={
组:[
{g1:[a',b',c',d']},
{g2:[a',b',c',d',e',f',g']},
{g3:[f',g',h',i',j',k',l']}
]
};
var duplicateArray=[];
for(对象中的变量键){
变量组=对象[键];
对于(变量x=0;xconsole.log(对象)经过长时间的思考,我为您准备了以下内容:

它会自动遍历对象/数组结构,并删除g1、g2、g3等数组中的重复字符串。。。等等

我从来没有用过lodash,所以这里是香草js

var对象={
组:[
{g1:[a',b',c',d']},
{g2:[a',b',c',d',e',f',g']},
{g3:[f',g',h',i',j',k',l']}
]
};
var duplicateArray=[];
for(对象中的变量键){
变量组=对象[键];
对于(变量x=0;xconsole.log(对象)如果您不知道上一个对象中有多少项将包含在下一个对象中,则可以使用带有外部数组的
.difference()
,该数组将存储所有现有项:

var对象={
组:[
{g1:[c1',c2',c3',c4',c5']},
{g2:[c1',c4',c5',d1',d2',d3',d4',d5']},
{g3:['c1',c3',c4',c5',d1',d4',d5',e1',e2',e3',e4',e5']}
]
};
var previousItems=[];
var group=object.group.map(函数(项){
返回映射值(项、函数(值){
var newValues=u0.difference(值,以前的项);
previousItems=previousItems.concat(新值);
返回新值;
});
});
控制台日志(组)

如果您不知道上一个对象中有多少项将包含在下一个对象中,则可以将
..difference()
与外部数组一起使用,该数组将存储所有现有项:

var对象={
组:[
{g1:[c1',c2',c3',c4',c5']},
{g2:[c1',c4',c5',d1',d2',d3',d4',d5']},
{g3:['c1',c3',c4',c5',d1',d4',d5',e1',e2',e3',e4',e5']}
]
};
var previousItems=[];
var group=object.group.map(函数(项){
返回映射值(项、函数(值){
var newValues=u0.difference(值,以前的项);
previousItems=previousItems.concat(新值);
返回新值;
});
});
控制台日志(组)

效果很好…我只检查了少数联系人,而不是5亿。。。希望它能在百万联系人中运行良好,性能良好。我很确定客户无法处理百万联系人,即使处理了,性能也不会很好。您可能必须将处理划分为几个WebWorker。这类事情应该由服务器来处理。是的,在node js中使用弹性搜索api,从索引和大小:)进行处理效果很好…我检查了几个联系人,不是5亿人。。。希望它能在百万联系人中运行良好,性能良好。我很确定客户无法处理百万联系人,即使处理了,性能也不会很好。您可能必须将处理划分为几个WebWorker。这类事情应该由服务器来处理。是的,在node js中使用弹性搜索api,从索引和大小:)