for of문 VS for in문
for...of문은 배열의 반복에서 사용되고,
for...in문은 객체의 반복에서 사용된다.
function select(arr, obj) {
// TODO: 여기에 코드를 작성합니다.
let result = {};
for(let j of arr) { // 배열 인덱스에 해당하는 값
for(let i in obj) { // 객체의 속성
if(i === j) {
result[i] = obj[i];
}
}
}
return result;
}
// const array1 = ['a', 'b', 'c'];
// for (const element of array1) {
// console.log(element);
// }
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
function countAllCharacters(str) {
let letter = str.split(''); // ['b', 'a', 'n', 'a', 'n', 'a']
let count = 0;
let obj = {};
// 1. 빈 문자열일 때 빈 객체 리턴
if(str.length === 0) return {};
// letter의 b부터 시작
// letter의 b와 str[i]가 같으면
// count++ 후에
for(j of letter) {
for(let i=0; i<str.length; i++){
if(j === str[i]){
count++;
}
obj[j] = count;
}
count = 0;
}
return obj;
}
// 입력 : string => str
// 출력 : str을 키로 갖는 객체
// 빈 문자열 => 빈 객체
function mostFrequentCharacter(str) {
// TODO: 여기에 코드를 작성합니다.
let obj = {};
let count = 0;
let mostStr = '';
for(let i of str) {
// 1. 띄워쓰기 제외
if(i === ' ') continue;
// 2. 처음엔 obj[i] 값이 없으므로 undefined이다 => 그래서 1을 넣어준다.
if(obj[i] === undefined) {
obj[i] = 1;
// 3. 그 이후로 같은 문자가 나오면 +1을 해준다.
} else {
obj[i] +=1;
}
// 4. obj[i](문자를 count한 값) > count : mostStr(가장 많이 반복되는 문자)에 i를 넣어주고,
// count(가장 많이 반복되는 문자의 횟수)에 obj[i]를 넣어준다.
if(obj[i] > count) {
count = obj[i];
mostStr = i;
}
}
// 5. string 타입 리턴
return mostStr;
}
// 입력 : string => str
// 출력 : string
// 1. 띄워쓰기 제외
// 2. 처음엔 obj[i] 값이 없으므로 undefined이다 => 그래서 1을 넣어준다.
// 3. 그 이후로 같은 문자가 나오면 +1을 해준다.
// 4. obj[i](문자를 count한 값) > count : mostStr(가장 많이 반복되는 문자)에 i를 넣어주고, count(가장 많이 반복되는 문자의 횟수)에 obj[i]를 넣어준다.
// 5. string 타입 리턴
객체 문제를 풀면서 어떤 값을 가지고 있는지 헷갈리는 부분들이 많았다. 그럴 때마다 console창에 어떤 값이 나오는지 확인하며 문제풀이를 진행했다. 내가 생각한 대로 값이 들어가지 않을 때도 있어서 앞으로 어떤 값이 나오는지 분명하게 확인하며 코드 작성을 해야겠다.
대괄호 표기법 (square bracket notation)
https://hianna.tistory.com/453
for in문 VS for of문
https://doozi0316.tistory.com/entry/JavaScript-for-in-for-of%EC%9D%98-%EC%B0%A8%EC%9D%B4