Assigning value to Object.values(object)[i] not working

Viewed 57

I am saving an object, but later when I add new values it return undefined. I am attempting to set any value that is undefined to the initial value, but unsuccessfully. I have tried assigning it to a fixed value, but it also does not work, and I do not know the cause of the problem.

let initalObject = {
   keyOne: true,
   keyTwo: "string",
   keyThree: 0,
}

let object = {
   keyOne: true,
   keyTwo: "string",
}

for (i = 0; i != Object.keys(initalObject).length; i++) {
   if (Object.values(object)[i] == undefined) {
      Object.values(object)[i] = Object.values(initalObject)[i];
   }
}

Thank you!

2 Answers

The reason that your code doesn't work is that Object.values(object) is not object itself, but it is an array of values. You need to access the values of object directly using its keys.

let initalObject = {
   keyOne: true,
   keyTwo: "string",
   keyThree: 0,
}

let object = {
   keyOne: true,
   keyTwo: "string",
}

const keys = Object.keys(initalObject);
for (key of keys) {
   if (object[key] === undefined) {
      object[key] = initalObject[key];
   }
}

console.log(object);

You can achieve the same using a for in loop.

let initialObject = {
   keyOne: true,
   keyTwo: "string",
   keyThree: 0,
}

let object = {
   keyOne: true,
   keyTwo: "string",
}

for (let key in initialObject) {
  if (!object[key]) {
    object[key] = initialObject[key]
  }
}

console.log(object)

Related