RooksStrife
RooksStrife

Reputation: 1747

JS - Combine Multiple Values in Object Into New Key in Same object

This should be simple, but I am stumbling on it.

What I have:

{
 notSet: 2,
 set: 9,
 blanks: 4,
 other: 8
}

Into:

{
  newKey: 6, (combine notSet and blanks + remove them)
  set: 9,
  other: 8
 }

Upvotes: 1

Views: 50

Answers (2)

Tushar Shahi
Tushar Shahi

Reputation: 20496

With delete keyword and a few checks it is possible. You would want to delete your extra keys.

I used the ?? (nullish coalescing operator) because some keys might not exist, and safer to use a 0 value, otherwise you might get NaN (if you try to add null/undefined with a number):

const obj1 = {
 notSet: 2,
 set: 9,
 blanks: 4,
 other: 8
};

const transformObj = (obj1) => {
obj1.newKey = (obj1.notSet ?? 0) + (obj1.blanks ?? 0);
delete obj1.notSet;
delete obj1.blanks;
};

transformObj(obj1);
console.log(obj1);

Upvotes: 0

R4ncid
R4ncid

Reputation: 7129

you can do this

const obj = {
 notSet: 2,
 set: 9,
 blanks: 4,
 other: 8
}

const transform = ({notSet, blanks, ...rest}) => ({
  ...rest,
  newKey: notSet + blanks
})

const newObject = transform(obj)

console.log(newObject)

Upvotes: 4

Related Questions