>

React와 JavaScript를 사용하고 있습니다. 키-값 쌍이있는 기존 객체를 가져오고 키-값 쌍의 모든 값을 null로 설정하려고합니다.

in 키워드와 함께 for 루프를 사용해 보았습니다. 각 키-값 쌍을 가져 와서 null로 변경했지만 문제가 발생하여 해결 방법을 모르겠습니다.

let myObj = {name: 'Bob', lname: 'Johnson'};
for (let x in myObj) {
    myObj.x = null;
}
return myObj;

myObj 변수가 모든 키-값 쌍을 null과 같게하기를 원합니다. 최종 결과 :

myObj = {name: null, lname: null};

  • 답변 # 1

    x 속성에 액세스하는 대신 이름으로 속성에 액세스해야합니다  개체에.

    let myObj = {name: 'Bob', lname: 'Johnson'}
    for (let x in myObj) {
        myObj[x] = null
    }
    console.log(myObj)
    
    

  • 답변 # 2

    할 때 기억하십시오

    obj.x = 'some value'
    
    

    실제로 객체에서 x라는 속성에 액세스하려고합니다.

    하지만 할 때

    obj[x] = 'some value'
    
    

    자바 스크립트는 변수 x의 값을 분석하여 속성 이름으로 사용하려고합니다.

    이제 객체의 키에서 forEach를 실행하고 모든 속성을 null로 설정할 수 있음을 분명히해야합니다.

    Object.keys(myObj).forEach(key => myObj[key] = null)
    
    

  • 답변 # 3

    불변성을 유지하려면 동일한 키로 새 객체를 만들면됩니다.

    const NullifyValues = obj => {
      return Object.keys(obj).reduce((result, key) => {
        result[key] = null;
        return result;
      }, {})
    }
    const test = {
      cat: 1,
      dog: 2,
      bat: 3
    }
    const nullified = NullifyValues(test);
    console.log(nullified) // Object { cat: null, dog: null, bat: null }
    
    

  • 답변 # 4

    점 표기법 대신 대괄호 표기법을 사용하도록 객체를 업데이트하십시오. 이 방법으로 변수 x 를 사용합니다  리터럴 값 "x"대신

    아래 작업 예 참조 :

    let myObj = {name: 'Bob', lname: 'Johnson'};
    for (let x in myObj) {
        myObj[x] = null; // change from myObj.x to myObj[x]
    }
    console.log(myObj);
    
    

  • 답변 # 5

    바닐라 JS가있는 한 줄 :

    Object.keys(myObj).forEach(v => myObj[v] = null)
    
    

관련 자료

  • 이전 javascript - navigatormediaDevicesgetUserMedia를 사용하는 동안 TypeError
  • 다음 angular 4 and rxjs - 각도 4 및 rxjs - 취소 된 요청이 서버에 도달하지 못하도록 방지