javascript - javascript 从两个匹配列的数组对象中获取不匹配的数据,其中一列包含管道分隔记录
问题描述
我陷入了通过检查主数据来获取记录的逻辑中,如果它存在于一个数组的管道分隔列中,并且不存在于另一个包含数组的主数据中,示例代码如下。如果可以,请提供帮助。
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'}
];
Resultant 数组应该是下面的 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;
});
});
解决方案
您可以使用String#split
and 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)));
推荐阅读
- c# - 由于在 abp.io 框架上工作,我收到 Http 错误 404
- python - python生成器中的循环
- json - 将 Spark JSON 格式的 RDD 值解析为不同的值
- angular - 类不是外部库的 Angular 模块
- node.js - 当你调用 `npm run` 来运行 NPM 脚本时,幕后会发生什么?
- android - 如何与 Glide 并行从缓存中加载图像?
- pandas - Pandas 在 x 轴上绘制数据列
- ios - 在 Xcode12 和 SwiftUI 中,如何在 Firebase Google Auth 之后导航到下一个屏幕?
- mysql - 带有子查询的 MySQL 左连接产生不同排序的不同结果
- sql-server - AZRE SQL / SQL 服务器通过 T-SQL 写回 Azure 存储