(1) scores 객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다. 단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다.
- A+ => 4.5
- A => 4
- B+ => 3.5
- B => 3
- C+ => 2.5
- C => 2
- D+ => 1.5
- D => 1
- F => 0
(2) requiredClasses 배열의 요소로는 존재하지만, scores의 키로는 존재하지 않는 항목이 있다면, 해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다.

const getExamResult = (scores, requiredClasses) => {
const newArr = {}; // 새로운 객체 생성
for (let i in scores) {
const value = scores[i];
const numericScores = {
'A+':4.5,
'A':4,
'B+':3.5,
'B':3,
'C+':2.5,
'C':2,
'D+':1.5,
'D':1,
'F':0
};
newArr[i] = numericScores[value]; // scores의 value값을 numericScores의 key값으로 받아서,numericScores의 value를 도출해낼 수 있어야 해!
} // 객체 for문 끝.
for (let j in requiredClasses) {
const myTotalKeys = Object.keys(newArr); // 새로운 배열 newArr에 해당 key 포함여부를 확인해야 하니까!
const elements = requiredClasses[j];
if(!myTotalKeys.includes(elements)) { // 변수 myTotalKeys에서 확인해야 한다!
newArr[elements] = 0;
}
} // 배열 for문 끝.
return newArr;
} // getExamResult 함수 끝.
객체에 특정 key를 만들고 value 할당하는 방법
const information = { // 프로퍼티 1개인 객체 생성 name: '김개발' }; const verb = 'developes'; // 추가예정 key const project = 'facebook';// 할당예정 value information[verb] = project;// [A] //[B]와 결과값이 같지만 [A]는 변수를 이용했으므로 매번 다른 값을 할당할 수 있습니다. information.developes = 'facebook' // [B]
객체도 배열처럼 순회가 가능합니다. 크게 두 가지 방법이 있습니다.
Object.keys(객체명);
객체명이 가지고 있는 키들의 목록을 배열로 return하는 메소드입니다.
const myObj = { // myObj라는 객체 생성
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
const keys = Object.keys(myObj); // 변수 keys에 다음의 key값들로 이루어진 배열 할당. ['name', 'weight', 'price', 'isFresh']
for (let i=0; i<keys.length; i++) {
const key = keys[i]; //각각의 키;
const value = myObj[key]; // 각각의 키에 해당하는 각각의 값;
console.log(value); // 객체 내부 각각의 key를 통해 할당 key들에 접근, 하나씩 순회하면서 console에 찍어준다.
}
+그 외 Object.values, Object.entries ...
Object.values는 객체의 value들로 이루어진 배열을 return 합니다.
Object.entries는 [key, value] 형식의, 길이 2짜리 배열로 이루어진 배열을 return 합니다.
const keys = Object.keys(myObj);// key들의 배열을 변수 keys에 할당함
const entries = Object.entries(myObj);// [key, value] 요소들의 배열을 변수 entries에 할당함
// returns [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
객체와 배열을 위해 존재하는 ES6에서 추가된 순회 문법입니다.
배열에서의
for-in문const arr = ['coconut', 'banana', 'pepper', 'coriander']; for (let i=0; i<arr.length; i++) { console.log(i); console.log(arr[i]); } // [A]ES5 문법const arr = ['coconut', 'banana', 'pepper', 'coriander']; for (let i in arr) { console.log(i); console.log(arr[i]); } // [B]ES6 문법 인덱스 값으로 무엇을 할당하고, 반복문이 몇 번 돌아야 할 지를 JS엔진 내부에서 자동으로 결정하게 됩니다.
객체에서의
for-in문const myObj = { // myObj라는 객체 생성 name: 'melon', weight: 4350, price: 16500, isFresh: true }; for (let key in obj) { // index에 해당하는 변수 key는 객체의 key에 해당하는 문자열을 할당받게 됩니다 const value = obj[key]; //객체 내부 각각의 value값들에 접근 console.log(key);// 객체 내부 각각의 key값들에 접근하고 console에 찍어줍니다. console.log(value);// 객체 내부 각각의 value값들에 접근해서 console에 찍어줍니다. }
(출처: wecode)