Как обновить определенное свойство объекта из другого объекта?

#javascript

#javascript

Вопрос:

У меня есть объект следующим образом:

 const params1 = {
  FunctionName: "Foo",
  Environment: {
    Variables: {
      test: "test"
    }
  }
}
 

И у меня есть другой объект следующим образом:

 const params2 = {
  FunctionName: "Bar",
  Something: "Something",
  SomethingMore: "SomethingMore",
  Environment: {
    Variables: {
      sample1: "sample1",
      sample2: "sample2"
    }
  }
}
 

Я просто хочу добавить все переменные среды от params2 до param1 , так params1 что, наконец, должно быть что-то вроде этого:

 {
  FunctionName: "Foo",
  Environment: {
    Variables: {
      test: "test",
      sample1: "sample1",
      sample2: "sample2"
    }
  }
}
 

Как я могу добиться того же, я могу сделать это, используя следующий код,

 params.Environment.Variables = {
  ...params.Environment.Variables,
  ...oldVars.Environment.Variables
}
 

Но у меня есть ограничение, что я не могу использовать оператор распространения, пожалуйста, помогите!

Ответ №1:

Вы можете сделать это с помощью object.assign

 const params1 = {
  FunctionName: "Foo",
  Environment: {
    Variables: {
      test: "test"
    }
  }
}

const params2 = {
  FunctionName: "Bar",
  Something: "Something",
  SomethingMore: "SomethingMore",
  Environment: {
    Variables: {
      sample1: "sample1",
      sample2: "sample2"
    }
  }
}

Object.assign(params1.Environment.Variables,params2.Environment.Variables)

console.log(params1) 

Ответ №2:

Вы можете использовать цикл for in .

 const params1 = {
  FunctionName: "Foo",
  Environment: {
    Variables: {
      test: "test"
    }
  }
}

const params2 = {
  FunctionName: "Bar",
  Something: "Something",
  SomethingMore: "SomethingMore",
  Environment: {
    Variables: {
      sample1: "sample1",
      sample2: "sample2"
    }
  }
}

for (const key in params2.Environment.Variables) {
  params1.Environment.Variables[key]=params2.Environment.Variables[key];
}

console.log(params1)
 

Ответ №3:

 const params1 = {
      FunctionName: "Foo",
      Environment: {
        Variables: {
          test: "test"
        }
      }
    }
    const params2 = {
      FunctionName: "Bar",
      Something: "Something",
      SomethingMore: "SomethingMore",
      Environment: {
        Variables: {
          sample1: "sample1",
          sample2: "sample2"
        }
      }
    }
    let param3={...params2}
    for(let el in params1.Environment.Variables){
      param3['Environment']['Variables'][el]=el;

    }
    console.log('hidhjjd=',param3)