[JavaScript#17]基本JavaScript-オブジェクト巡回(Propertyのリスト)
22231 ワード
オブジェクトの遍歴=Propertyのリスト(列挙)
Object.keys()
・for-in 문
Object.keys()
Object.keys()
メソッドは、あるオブジェクトが持つ鍵のリストを配列に戻す.const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
const keys = Object.keys(obj)
for (let i = 0; i < keys.length; i++) {
const key = key[i] // 각각의 키
const value = obj[key] //키에 해당하는 각각의 값
}
Object.values(), Object.entries()
Object.values
・Object.entries
const values = Object.values(obj)
// values === ['melon', 4350, 16500, true]
const entries = Object.entries(obj)
/*
entries === [
['name', 'melon'],
['weight', 4350],
['price', 16500],
['isFresh', true]
]
*/
for...文。
for (변수선언문 in 객체/배열) {...}
//배열 순회
const arr = ['coconut', 'banana', 'pepper', 'coriander']
for (let i = 0; i < arr.length; i ++) {
console.log(i)
console.log(arr[i])
}
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
(let i = 0; i < arr.length; i ++)
//객체 순회
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
for (let key in obj) {
const value = obj[key];
console.log(key) //name, weight, price, isFresh
console.log(value) //melon, 4350, 16500, true
}
Assignment
以下の説明を読んでgetExamResult関数を実装してください.
パラメータscoresは次のオブジェクトです.オブジェクト内の要素の数とキーの名前が異なる場合があります.オブジェクトの値には、次の9つの文字列のいずれかがあります.
'A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F'
{
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
パラメータrequiredClassesは、次のように文字列配列です.[『英会話』『基礎数学』『工学数学』『コンピュータ科学概論』]
関数を実装して、次の条件を満たすオブジェクトを返します.
スコアオブジェクトが持つキーは、新しいオブジェクトに含める必要があります.ただし、これらの値は、次の原理に従って数値に変換して割り当てる必要があります.
A+ => 4.5
A => 4
B+ => 3.5
B => 3
C+ => 2.5
C => 2
D+ => 1.5
D => 1
F => 0
アイテムがRequiredClosses配列の要素として存在し、スコアのキーが存在しない場合は、その要素は新しいオブジェクトのキーであり、値は0である必要があります.上記の例で説明したオブジェクトと配列がパラメータとして入力されている場合、次のオブジェクトが返されます.要素間の順序は異なる場合がありますが、スコアには関係ありません.
{
'생활속의회계': 2,
'논리적글쓰기': 3,
'독일문화의이해': 3.5,
'기초수학': 1.5,
'영어회화': 2.5,
'인지발달심리학': 4.5,
'공학수학': 0,
'컴퓨터과학개론': 0,
}
// getExamResult 함수 만들기
// 새로운 객체 만들기
// 인자로 들어온 score 순회해보기
// 새로운 객체에 scores에 있는 key 값을 다 포함시키기
// 학점 문자열 숫자로 바꾸기
// requiredClass 배열 안에 있는데 scores 객체에 없는 값은 0점 처리
// required에 있는게 result에 없는지 확인
// requried 순회
// 순회한 값이 result에 없는지 확인
// 없으면 0점
// 첫번째 풀이
const getExamResult = (scores, requiredClasses) => {
let result = {};
const matchScores = {
['A+']: 4.5,
'A': 4,
['B+']: 3.5,
'B': 3,
['C+']: 2.5,
'C': 2,
['D+']: 1.5,
'D': 1,
'F': 0
};
for (let key in scores) {
result[key] = matchScores[scores[key]]; //key 값을 새로운 배열에 넣어 주기 = 인자 key를 숫자로 바꿔주기
}
requiredClasses.forEach((el) => {
if (result[el] === undefined) {
result[el] = 0;
}
})
return result;
}
//두번째 풀이
const getExamResult = (scores, requiredClasses) => {
let result = {};
const matchScores = {
['A+']: 4.5,
'A': 4,
['B+']: 3.5,
'B': 3,
['C+']: 2.5,
'C': 2,
['D+']: 1.5,
'D': 1,
'F': 0
};
const scoresKey = Object.keys(scores); //key값 배열로 가져오기
//console.log(scoreKeys);
//value 값 가져오기
for (let i = 0; i < scoresKey.length; i++) {
const name = scoresKey[i]; //key 배열
const score = scores[name]; //value 배열
result[name] = matchScores[score]; //새로운 배열에 숫자로 변환해서 넣기
}
for (let i = 0; i < requiredClasses.length; i++) {
const className = requiredClasses[i];
if (!result[className]) { // === undefiend //result에 값을 다 담아놨기 때문에 result를 확인하면 된다!
result[className] = 0;
}
}
return result;
}
//console.log 확인을 위한 예시
const exampleScore = {
'생활속의회계': 'C',
'논리적글쓰기': 'B',
'독일문화의이해': 'B+',
'기초수학': 'D+',
'영어회화': 'C+',
'인지발달심리학': 'A+',
}
getExampleResult(exampleScore)
Reference
この問題について([JavaScript#17]基本JavaScript-オブジェクト巡回(Propertyのリスト)), 我々は、より多くの情報をここで見つけました https://velog.io/@kykim_dev/JavaScript-15-Basic-of-JavaScript-객체-순회프로퍼티-열거テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol