1. 원래 객체 배열을 복제합니다.

  2. 새로운 객체를 만들어서 원하는 속성을 변경합니다.

  3. 변경된 객체를 새로운 배열에 추가ㅣ합니다.

  4. setState() 메서드를 사용하여 상태를 업데이트합니다.

    state = {
      objArray: [
        { code: "", name: "", key: "key_empty" },
        { code: "A", name: "A", key: "key_A" },
        { code: "B", name: "B", key: "key_B" },
        { code: "C", name: "C", key: "key_C" }
      ]
    }
    
    // 1. 배열의 요소 찾기
    const findIndex = this.state.objArray.findIndex(element => element.code == "B");
    // 예제에서는 code라는 속성이 유일한 값이라 생각하고 code 속성을 기준으로 code: "B"인
    // 인덱스를 찾습니다.indexOf() 함수 또는 findIndex() 함수를 사용합니다.
    
    // 2. 배열의 복사본 만들기
    let copyArray = [...this.state.objArray];
    // state를 setState() 함수를 사용하지 않고 직접 수정하면, 리 렌더링 되지 않으므로 
    // ES6의 스프레드 연산자(...)를 사용해서 배열의 복사본을 생성합니다.
    
    // 3. code가 "B"인 name의 값을 변경
    if(findIndex != -1) {
      copyArray[findIndex] = {...copyArray[findIndex], name: "Update"};
    }
    // findIndex() 함수는 주어진 판별 함수를 만족하는 값이 없으면, -1을 반환합니다.
    // 조건문을 만족하면, 배열의 복사본에서 name의 값을 변경합니다.
    
    // 4. setState() 함수로 state변경
    this.setState({
      objArray: copyArray
    });