[JS]Object methods(keys,values,entries,assign)
keys,values,entries : 객체를 배열로 다룰 때 사용
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys
객체의 키들을 배열로 반환하는 메서드
Object.keys(obj); // ['name', 'weight', 'price', 'isFresh']
Object.values
객체의 값들을 배열로 반환하는 메서드
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]
Object.entries
객체의 키와 값을 2차원 배열로 반환하는 메서드
const entries = Object.entries(obj)
/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/
### 예제(뭔가 부족한것 같아 기록...)
아래 설명을 읽고 getExamResult 함수를 구현하세요.
인자 scores 는 다음과 같은 객체입니다. 객체의 요소의 갯수 및 키의 이름들은 달라질 수 있습니다. 객체의 값은 다음 9가지 문자열 중에서 하나를 가지고 있습니다.
'A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F'
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
인자 requiredClasses 는 다음과 같이 문자열로 된 배열입니다.
['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']
['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']
다음 조건을 만족하는 객체를 리턴하도록 함수를 구현해주세요.
scores 객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다. 단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다.
A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
requiredClasses 배열의 요소로는 존재하지만, scores의 키로는 존재하지 않는 항목이 있다면, 해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다. 위에서 예시로 묘사된 객체와 배열이 인자로 들어왔다면, 다음과 같은 객체과 리턴됩니다. 요소간 순서는 다를수 있지만, 채점에 무관합니다.
{
'생활속의회계': 2,
'논리적글쓰기': 3,
'독일문화의이해': 3.5,
'기초수학': 1.5,
'영어회화': 2.5,
'인지발달심리학': 4.5,
'공학수학': 0,
'컴퓨터과학개론': 0,
}
(Solution)
const getExamResult = (scores, requiredClasses) => {
let ret = {};
let keys = Object.keys(scores); // 내과목명들
let filteredRequiredClasses; // requiredClasses에서 중복제거
let flag = 0;
for (let key in scores) {
if (scores[key] === "A+") ret[key] = 4.5;
else if (scores[key] === "A") ret[key] = 4;
else if (scores[key] === "B+") ret[key] = 3.5;
else if (scores[key] === "B") ret[key] = 3;
else if (scores[key] === "C+") ret[key] = 2.5;
else if (scores[key] === "C") ret[key] = 2;
else if (scores[key] === "D+") ret[key] = 1.5;
else if (scores[key] === "D") ret[key] = 1;
else if (scores[key] === "F") ret[key] = 0;
}
// console.log(keys);
for (let i = 0; i < requiredClasses.length; i++) {
flag = 0;
for (let j = 0; j < keys.length - 1; j++) {
if (requiredClasses[i] === keys[j]) {
flag = 1;
}
if (flag === 0 && (j === keys.length - 2)) {
ret[requiredClasses[i]] = 0;
}
}
}
return (ret);
}
let scoresEx = {
'생활속의회계': 'C',//2
'논리적글쓰기': 'B',//3
'독일문화의이해': 'B+',//3.5
'기초수학': 'D+',//1.5
'영어회화': 'C+',//2.5
'인지발달심리학': 'A+',//4.5
};
let requiredClassesEx = ['영어회화', '기초수학', '공학수학', '컴퓨터과학개론'];
console.log(getExamResult(scoresEx, requiredClassesEx));
## 기타
### Object.assign(키/값 복사)
let a = {name:'egoing'};
let b = Object.assign({},a);
console.log(a, b, a===b); // {name:'egoing'}, {name:'egoing'}, false
let a = {name:'egoing'};
let b = Object.assign({left: 1, right: 2},a);
console.log(a, b, a===b); // {left: 1, right: 2, name:'egoing'}, {name:'egoing'}, false
Author And Source
이 문제에 관하여([JS]Object methods(keys,values,entries,assign)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyeonze/JSObject-methodskeysvaluesentries저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)