1. 서버로부터 받은 문자열 데이터를 JSON으로 변환
서버에서 받은 데이터는 보통 문자열 형식으로 전달됩니다. 이 문자열 데이터를 JSON 형식으로 변환하여 객체처럼 다루어야 할 때가 많습니다.
let scores = [];
// 서버로부터 받은 문자열 데이터 - 서버로 부터 받아온 데이터는 아래와 같은 형식입니다.
const dataFromServer = `
[
{ "name": "홍길동", "korean": 80, "math": 90, "english": 90 },
{ "name": "고길동", "korean": 90, "math": 80, "english": 80 },
{ "name": "신길동", "korean": 70, "math": 80, "english": 70 }
]
`;
console.log(dataFromServer, typeof dataFromServer);
// 문자열 데이터를 JSON 형식으로 변환
scores = JSON.parse(dataFromServer); // JSON.parse는 JSON 데이터를 자바스크립트 객체로 변환합니다.
console.log(scores, typeof scores); // scores의 타입 확인용 출력입니다.
// 헤더 출력 - /t를 이용하면 탭과 같은 효과가 나옵니다. 정렬하기에 용이합니다.
console.log(`--------\t----\t----\t----\t----\t----\t`);
console.log(`학생이름\t국어\t영어\t수학\t합계\t평균`);
console.log(`--------\t----\t----\t----\t----\t----\t`);
// 학생별 점수 출력
scores.forEach(score => {
const total = () => score.korean + score.english + score.math;
const average = () => {
const result = total() / 3;
return Math.round(result * 10) / 10; // 소수점 첫째 자리 반올림
};
console.log(`${score.name}\t\t${score.korean}\t${score.english}\t${score.math}\t${total()}\t${average()}`);
});
console.log(`--------\t----\t----\t----\t----\t----\t`);
이 실행 결과는 다음과 같습니다.
[...]
string
[...]
object
-------- ---- ---- ---- ---- ----
학생이름 국어 영어 수학 합계 평균
-------- ---- ---- ---- ---- ----
홍길동 80 90 90 260 86.7
고길동 90 80 80 250 83.3
신길동 70 70 80 220 73.3
-------- ---- ---- ---- ---- ----
위 예시에서 JSON.parse() 메서드를 사용하여 문자열로 받은 데이터를 실제 객체 배열로 변환하고, 이를 활용하여 각 학생의 점수와 합계, 평균을 출력하는 방식입니다.
2. 객체 속성명 활용: 단축 속성명(Shorthand Property Names)
객체의 속성명을 정의할 때, 변수명과 속성명이 동일한 경우에는 속성명 부분을 생략할 수 있습니다. 이를 단축 속성명이라고 합니다.
//예시 1 단축 속성명 사용
let name = 'John';
// 기존 방식
const person1 = {
name: name, //'name' 변수의 값을 할당합니다.
getName: function getName() { //'getName'이라는 함수 속성을 정의합니다.
return this.name; // 'this'는 'person1' 객체를 가리킵니다.
}
};
// 단축 속성명 방식
const person2 = {
name, // 속성의 이름을 생략합니다. 변수의 이름과 값이 같기 때문에 가능합니다.
getName() { // 함수명과 동일한 이름의 속성도 단축 가능합니다.
return this.name;
}
};
console.log(person1);
console.log(person1.getName());
console.log(person2);
console.log(person2.getName());
//두 값의 결과는 완전히 동일합니다.
//간단하게 말해서 name: name -> name으로 getName: function getName() -> getName() 으로 변환 가능합니다.
//예시2 객체 반환 시 단축 속성명 - return시 단축 가능함을 말합니다.
function returnObject1(age, name) {
return { age: age, name: name }; // 기존 방식으로 명시적 작성한 경우입니다.
}
console.log(returnObject1(23, "홍길동")); // { age: 23, name: '홍길동' }
function returnObject2(age, name) {
return { age, name }; // 속성명과 변수명이 동일하면 단축 가능합니다.
}
console.log(returnObject2(23, "홍길동")); // { age: 23, name: '홍길동' }
단축 속성명은 객체 리터럴에서 변수가 가지고 있는 값을 속성으로 바로 설정할 때 매우 유용합니다.
3. 계산된 속성명(Computed Property Names)
계산된 속성명은 객체 속성명(키)을 동적으로 계산하여 정의할 수 있게 해주는 기능입니다. 변수를 이용하거나 연산을 통해 객체의 속성명을 만들 수 있습니다.
function returnObject1(key, value) {
return { [key]: value }; // 계산된 속성명입니다. 주요한점은 대괄호로 이는 계산된 속성명을 정의하는 방식입니다.
}
console.log(returnObject1('name', 'John')); // { name: 'John' } //자동으로 키는 name이 되고 john이 값으로 들어간 것을 볼 수 있습니다.
function returnObject2(key, value, no) {
return { [key + no]: value }; // 계산된 속성명: 'name1', 'name2' 형태로 생성됩니다.
}
console.log(returnObject2('name', 'John', 1)); // { name1: 'John' }
console.log(returnObject2('name', 'Mike', 2)); // { name2: 'Mike' }
이러한 계산된 속성명의 기본 문법은 아래와 같습니다.
const obj = {
[expression]: value
};
[key]처럼 대괄호를 사용하여 속성명을 동적으로 만들 수 있습니다. 이를 통해 변수나 표현식을 이용해 객체의 속성명을 유동적으로 설정할 수 있습니다.
*생성형 AI 활용한 클라우드&보안 전문가 양성캠프 과정의 교육내용 정리 자료입니다.
'코딩 > 자바스크립트' 카테고리의 다른 글
[새싹 성동 2기] JavaScript의 배열 메서드: map(), filter(), reduce() (2) | 2024.11.15 |
---|---|
[새싹 성동 2기] JavaScript 전개 연산자(Spread Operator)와 비구조화(Destructuring) 정리 (0) | 2024.11.15 |
[새싹 성동 2기] 자바스크립트를 이용한 간단한 코딩 실습 (0) | 2024.11.12 |
[새싹 성동 2기] 자바스크립트에서 함수 정의와 활용법 (2) | 2024.11.12 |
[새싹 성동 2기] 자바스크립트의 기초: 변수, 자료형, 연산자, 그리고 호이스팅 (1) | 2024.11.12 |