Week 1 - JavaScript_#30. object (3)

Cein1·2022년 9월 25일

replit

목록 보기
1/2

30. object (3)

Assignment

(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 함수 끝.

1. 객체의 키를 변수로 접근하기

객체에 특정 key를 만들고 value 할당하는 방법

const information = { // 프로퍼티 1개인 객체 생성
	name: '김개발'
};
const verb = 'developes'; // 추가예정 key
const project = 'facebook';// 할당예정 value
information[verb] = project;// [A]
//[B]와 결과값이 같지만 [A]는 변수를 이용했으므로 매번 다른 값을 할당할 수 있습니다.
information.developes = 'facebook'
// [B]

2. 객체 순회하기

객체도 배열처럼 순회가 가능합니다. 크게 두 가지 방법이 있습니다.

2-1. Object.keys()

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]
]

2-2. for-in

객체와 배열을 위해 존재하는 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)

0개의 댓글