JSFiddle - React, Tailwind, and code Playground

by Barney Carroll

CSS

html {
    font: mono-space;
}

JavaScript

var full = [{a:'aa1',b:'bb1'},{a:'aa3',b:'bb2'},{a:'aa3',b:'bb3'},{a:'aa2',b:'bb3'}];
var some = [{a:'aa1',b:'bb1'},{a:'aa3',b:'bb3'}];

document.body.innerHTML = JSON.stringify(matchAndFlagWith('c', full, some));

function clone(obj){
  return JSON.parse(JSON.stringify(obj));
}

function equal(){
  for(var i = 1, l = arguments.length, x = JSON.stringify(arguments[0]); i < arguments.length; ++i){
    if(x !== JSON.stringify(arguments[i])){
      return false;
    }
  }

  return true;
}

function matchAndFlagWith(flagLabel,aFull,aSome){
  var aFlagged = clone(aFull);

  for(var i1 = 0, l1 = aSome.length, oSome; oSome = aSome[i1], i1 < l1; ++i1){
    for(var i2 = 0, l2 = aFlagged.length, oFlagged; oFlagged = aFlagged[i2], i2 < l2; ++i2){
      if(equal(oFlagged,oSome)){
        oFlagged[flagLabel] = true;
      }
    }
  }

  return aFlagged;
}