Array of Object Manipulation in JavaScript

Jackson Kasi - Jun 11 '22 - - Dev Community

how to get the difference between two arrays of objects and merge in a single object?


two array of objects

const befor = [
  {
    one: "123",
    two: "124",
    three: "127",
  },
];

const after = [
  {
    one: "123",
    two: "125",
    three: "128",
  },
];

Enter fullscreen mode Exit fullscreen mode

We get the changed value only from the two array

let newChanges = Object.keys(befor[0]).map(
  (item) => befor[0][item] !== after[0][item] && { [item]: after[0][item] }
);

console.log(newChanges)
Enter fullscreen mode Exit fullscreen mode

output:

Image description

We do not need the **boolean **value here.
Don't worry about it.
I will tell you about this later.

let result = Object.assign({}, ...newChanges);
console.log(result)
Enter fullscreen mode Exit fullscreen mode

now output:

{ two: '125', four: '130' }

Image description

WHF?

Object.assign( ) create an Object.
This requires key and value.

But Boolean value is a value of one.

Therefore Object.assign( ) does not recognize the boolean value

But I can not say this is the right reason 😅

another solution

newChanges = newChanges.filter(Boolean)
console.log(newChanges);
Enter fullscreen mode Exit fullscreen mode

output:
Image description

what happen?

The filter method filters out all the values that return false when passed to a function.
When you use filter and pass a Boolean constructor.

read about it👀


full Code here 👨‍💻:


const befor = [
  {
    one: "123",
    two: "124",
    three: "128",
    four: "132",
  },
];

const after = [
  {
    one: "123",
    two: "125",
    three: "128",
    four: "130",
  },
];

let newChanges = Object.keys(befor[0]).map(
  (item) => befor[0][item] !== after[0][item] && { [item]: after[0][item] }
);

newChanges = newChanges.filter(Boolean)
// console.log(newChanges);

let result = Object.assign({}, ...newChanges);
console.log(result);

Enter fullscreen mode Exit fullscreen mode

result 🎉:

{ two: '125', four: '130' }

Image description


conclusion 😊

Just wanted to share this with you 😁

If you find another great way to do this don't forget to share here.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .