我陷入了通过检查主数据是否存在于一个数组的管道分隔列中而不存在于另一个包含数组的主数据中的记录获取逻辑中,示例代码如下。如果可以,请提供帮助。< / 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;
});
});
答案 0 :(得分:0)
您可以为此使用String#split
和Array#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)));