javascript从两个匹配列的数组对象中获取不匹配的数据,其中一列包含管道分隔记录

时间:2018-08-20 13:08:38

标签: javascript jquery arrays

我陷入了通过检查主数据是否存在于一个数组的管道分隔列中而不存在于另一个包含数组的主数据中的记录获取逻辑中,示例代码如下。如果可以,请提供帮助。< / p>

var names = [
    {id:1, name:'Sandra|John', type:'user', username:'sandraJ'},
    {id:2, name:'John', type:'admin', username:'johnny2'},
    {id:3, name:'Peter|John', type:'user', username:'peteJ'},
    {id:4, name:'Bobby', type:'user', username:'be_bob'}
];
var master = [
    {id:1, value:'John'},
    {id:2, value:'Bobby'}
];

结果数组应为下面的Result3。

var result3 = [
    {id:1, name:'Sandra'},
    {id:2, name:'Peter'}
];

我尝试了下面的代码,但没有得到结果。

var result = names.filter(function(o1){
                return !master.some(function(o2){
                    return SplitTheString(o1.name) === o2.value;
                });
            });

1 个答案:

答案 0 :(得分:0)

您可以为此使用String#splitArray#includes

var result = names.filter(function(o1) {
  return !master.some(function(o2) {
    return o1.name.split('|').includes(o2.value);
  });
});

PS:这是ES6版本,只是因为:

let result = names.filter(o1 => !master.some(o2 => o1.name.split('|').includes(o2.value)));