检查对象值的数组是否存在于另一个长度不同的数组中
Check if array of object value exist in another array but different length
我有2个对象数组,只是想检查b是否存在于a中,如果是,添加一个新属性。但是b的长度是动态的。我将得到b的未定义错误
var a = [{name:'john'},{name:'james'},{name:'jordan'},{name:'joe'}];
var b = [{name:'john'},{name:'joe'}];
var exist = 0;
var c = _.map(a,function(result,i){
exist = b[i].name.indexOf(a.name) > -1 ? exist = 1 : exist = 0;
return _.extend({},c,{'exist':exist});
});
什么线索吗?
我将遍历b个对象,并为每个对象检查它们是否存在于A中,如以下示例所示。
var a = [ { _id: '5815adb4badf3f311a2cd25b', username: 'david&jane' },
{ _id: '5815e40e136c8e33b65b3478', username: 'david+jane' } ];
var b = [ { username: 'david&jane' },
{ username: 'david<3jane' },
{ username: 'david+jane' },
{ username: 'davidjane' }
]
var c = [];
b.forEach(function(user) {
var exists = false;
for (let i=0; i<a.length && !exists; i++){
exists = a[i].username === user.username ;
}
c.push(Object.assign({},user,{exists}));
});
console.log(c);
第一个stringify
a
数组。循环b
并创建一个动态正则表达式,以便在a
上进行测试,如果测试匹配完成您的工作。
希望这对你有帮助!
var a = [{name:'john'},{name:'james'},{name:'jordan'},{name:'joe'}];
var b = [{name:'john'},{name:'joe'}, {name:'hello'}];
var strA = JSON.stringify(a)
var result = b.map((el) => {
var elStr = JSON.stringify(el)
var regex = new RegExp(elStr, 'g')
if(regex.test(strA))
return Object.assign({}, el, {exist: 1})
return Object.assign({}, el, {exist: 0})
})
console.log(result)
您可以使用Array.every
检查b
中的每个对象也在a
中,并且在回调中您可以使用Array.some
检查a
中的键和值
var a = [{name:'john'},{name:'james'},{name:'jordan'},{name:'joe'}];
var b = [{name:'john'},{name:'joe'}];
var exist = b.every( (o) => {
let k = Object.keys(o)[0];
return a.some( p => k in p && p[k] === o[k]);
});
console.log(exist)
如果你想添加属性,你也可以这样做
var a = [{name:'john'},{name:'james'},{name:'jordan'},{name:'joe'}];
var b = [{name:'john'},{name:'joe'}];
var c = b.map( (o) => {
let k = Object.keys(o)[0];
return o.exist = a.some( p => k in p && p[k] === o[k]), o;
});
console.log(c);
相关文章:
- JavaScript数组包含一个值
- 使用事件更改数组的一个元素
- 从 javascript 数组创建一个 Jquery 数组
- 使用javascript匹配字符串中数组的一个元素
- Angular2从数组创建一个列表
- 在Javascript数组或一个对象中存储多个数据所需的Tweak
- 你能给被劫持的JavaScript数组添加一个函数吗
- 从带有循环的数组中一个接一个地在画布上绘制形状
- 将图像数组从一个窗口传递到另一个窗口,并在javascript的新窗口中显示图像
- 使用拆分字符串的数组创建一个对象
- 多维数组 - 创建一个表
- 将数组从一个函数传递到另一个函数
- 如何将复选框值的数组从一个JSP页面传递到另一个页面
- 使用Knockout.Js将数组绑定到表,并将数组的一个项绑定到另一个元素
- 需要访问数组从一个js到另一个
- 我如何发送数据像数组从一个html文件到另一个html页面
- 从另一个对象和要保存的键数组生成一个对象的最简洁的方法
- 用另一个js数组填充一个javascript数组
- 将对象数组从一个函数传递到另一个函数
- 根据另一个值数组过滤一个对象数组,返回一个空列表