arr = [1,2,3,4] 를 인덱스가 있는 객체로 바꾸는 법
obj = {...arr}
과일은 영어로 fruite가 아니라 fruit다.
function animal_comment() {
const arr = ["토끼", "강아지", "고양이", "얼룩말"];
const obj = {};
const arr2 = ["귀가 크다", "귀엽다", "할퀸다", "멋있다"];
for(let i = 0; i < arr.length; i++) {
let animal = arr[i];
let comment = arr2[i];
obj[animal] = comment;
}
return obj;
}
animal_comment();
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
function moreThanHalf(nums) {
let count = nums.length;
const map = {};
if(nums.length == 1) return nums[0];
for(let i = 0; i < nums.length; i++) {
let number = nums[i];
if(map[number]) {
map[number]++;
if(map[number] >= nums.length/2) return number;
} else map[number] = 1;
}
}
moreThanHalf([2,2,2,1,1,2]);
우선 문제의 뜻은 배열 중에서 가장 갯수가 많이 들어있는 숫자를 반환하는 것이다!
그러기 위해서 먼저 배열의 길이를 변수 count에 담아주었다.
그리고 map 오브젝트를 선언했는데 여기에는 키로 숫자, 벨류로 숫자의 개수를 넣어줄거다~
if(nums.length == 1)
만약 nums 배열이 요소 하나밖에 없으면은 바로 첫번째 인덱스 값을 리턴해주고
그 후에 반복문을 돌린다
for(let i = 0; i < nums.length; i++) {
let number = nums[i];
if(map[number]) { // 이미 봤던 숫자
map[number]++; // ++ 더해줌
if(map[number] >= nums.length/2) return number; // 과반수면 그 숫자를 return 함
} else map[number] = 1; // 여기가 처음본 숫자는 갯수를 1로 설정
}
이 부분은 반복문 부분인데
우선 number라는 변수에 nums의 각각의 값을 넣어주고
객체를 만들어서 만약 map[number]가 true면은 즉, 0개가 아니라 개수가 있으면, 이미 봤던 숫자라면 개수를 추가해주고, 만약에 개수가 배열의 길이를 반으로 나눈 값보다 이상이면은 과반수 라는 뜻이니까 해당 숫자 number를 리턴해준다!
그리고 else는 처음 본 숫자이므로 갯수를 1로 저장시켜 둔다.
객체에서 .(dot notation)을 쓸때는 주로 값에 접근을 할때고, []을 쓸때는 반복문의 변수나 그런걸 사용할 필요가 있을때 사용한다.
느낀점
객체, 배열 왔다갔다 하는게 아직도 어렵다