Interface -
interface I {
    name: string;
    age: number;
    city: string;
    address?: string;
}
Arrays -
const arr1: I[] = [
  {
    name: "daniel",
    age: 21,
    city: 'NYC'
  },
  {
    name: "kosta",
    age: 28,
    city: "NYC"
  },
  {
    name: "yoav",
    age: 28,
    city: "NYC"
  }
];
const arr2: I[] = [{
    name: "daniel",
    age: 21,
    city: "NYC",
    address: 'E. 43'
  },
  {
    name: "simon",
    age: 24,
    city: "NYC",
    address: 'E. 43'
  },
  {
    name: "david",
    age: 22,
    city: "NYC",
    address: 'E. 43'
  },
  {
    name: "kosta",
    age: 28,
    city: "NYC",
    address: 'E. 43'
  }
];
Getting keys for the arrays -
const arr1Map: ReadonlyMap<string, string | undefined> = new Map(
    arr1.map(
        ({
            name, age, city, address
        }) => [
            `${name}|${age}|${city}`,
            address
        ]
    )
);
const arr2Map: ReadonlyMap<string, string | undefined> = new Map(
    arr2.map(
        ({
            name, age, city, address
        }) => [
            `${name}|${age}|${city}`,
            address
        ]
    )
);
Empty arrays -
let arr1Match: I[] = []
let arr1Unmatch: I[] = []
let arr2Match: I[] = []
let arr2Unmatch: I[] = []
What I need to do now is to campare all values in arr1 to arr2, if there is a match, store the match from arr1 in arr1Match and the match from arr2 in arr2Match. If there is an Unmatch I need to store the unmatch arr1 in arr1Unmatch and the unmatch from arr2 in arr2Unmatch.
And if there is a match I need to store the address from arr2 into arr1.
The desierd output -
arr1Match: [{ name: "daniel", age: 21, city: "NYC", address: 'E. 43' }, { name: "kosta", age: 28, city: "NYC", address: 'E. 43' } ]
arr2Match: [{ name: "daniel", age: 21, city: "NYC", address: 'E. 43' }, { name: "kosta", age: 28, city: "NYC", address: 'E. 43' }]
arr1Unmatch: [{ name: "yoav", age: 28, city: "NYC" }]
arr2Unmatch: [{ name: "simon", age: 24, city: "NYC", address: 'E. 43' }, { name: "david", age: 22, city: "NYC", address: 'E. 43' }]
 
    