检查对象值的数组是否存在于另一个长度不同的数组中

Check if array of object value exist in another array but different length

本文关键字:数组 另一个 存在 对象 是否 检查      更新时间:2023-09-26

我有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);