JavaScript에서 조건에 따라 키-값 쌍 추가하는 방법
JavaScript에서 조건을 기준으로 객체(사전)에 새로운 키-값 쌍을 동적으로 추가해야 하는 경우가 자주 있습니다. 이럴 때 Object.assign() 메서드를 활용하면 깔끔하게 처리할 수 있습니다. 아래 예제는 학생 이름이 특정 목록에 포함되어 있는지 여부에 따라 lastName이라는 새로운 속성을 조건부로 추가하는 방법을 보여줍니다.
예제 코드
const details = {
john: { 'studentName': 'John' },
david: { 'studentName': 'David' },
mike: { 'studentName': 'Mike' },
bob: { 'studentName': 'Bob' },
carol: { 'studentName': 'Carol' }
},
join_values = ['David', 'Carol'],
output = Object.assign(
{},
...Object
.keys(details)
.map(key =>
({[key]: {
...details[key],
lastName: join_values.includes(details[key].studentName) ?
'Miller' : 'Smith'
}})))
console.log(output)코드 설명:
Object.keys(details): 객체의 모든 키(john,david등)를 배열로 가져옵니다..map(): 각 키에 대해 새로운 객체를 생성하며, 스프레드 연산자(...)로 기존 속성을 복사한 뒤 조건에 따라lastName을 추가합니다.join_values.includes(): 학생 이름이 목록에 있으면'Miller', 없으면'Smith'를 값으로 지정합니다.Object.assign(): 변환된 개별 객체들을 하나의 객체로 병합합니다.
실행 방법
위 프로그램을 실행하려면 다음 명령어를 사용합니다.
node fileName.js
출력 결과
파일 이름이 demo157.js인 경우, 실행 결과는 다음과 같습니다.
PS C:\Users\Amit\JavaScript-code> node demo157.js
{
john: { studentName: 'John', lastName: 'Smith' },
david: { studentName: 'David', lastName: 'Miller' },
mike: { studentName: 'Mike', lastName: 'Smith' },
bob: { studentName: 'Bob', lastName: 'Smith' },
carol: { studentName: 'Carol', lastName: 'Miller' }
}결과를 보면 David와 Carol은 join_values 배열에 포함되어 있으므로 lastName이 'Miller'로 설정되었고, 나머지 학생들은 'Smith'로 할당된 것을 확인할 수 있습니다.