TIL 작성 2021 9/6
- (1) typeof ()가 있을 경우 / ()가 없을 경우
function removeNumbersLargerThan(num, obj) {
for(let key in obj){
if(typeof obj[key] === 'number'){
if(obj[key]>num){
delete obj[key];
}
}
}
// TODO: 여기에 코드를 작성합니다.
}
console.log(typeof)
typeof 123
"number"
typeof (123)
"number"
-> 소가로()
가 있든 없든 메소드가 진행 된다.
- (2) 객체 코플릿 (14번) for 구문 안쓰는 이유
- 문제: 객체, 키, 수를 입력받아 주어진 키에 해당하는 값이 배열인 경우, 수가 가리키는 인덱스에 해당하는 요소를 리턴해야 합니다.
- 내가 푼 답안
function getElementOfArrayProperty(obj, key, index) {
let arrProperty = obj[key];
for(const key in obj){
if(Array.isArray(obj[key])===true){
return obj[key][index];
}else{
return undefined;
}
}
// key의 값이 배열인지 확인한다
// 배열일 경우 index의 요소를 리턴한다.
// TODO: 여기에 코드를 작성합니다.
}
- 답안
function getElementOfArrayProperty(obj, key, index) {
let arrProperty = obj[key];
if(Array.isArray(arrProperty)===true){
return arrProperty[index];
}else{
return undefined;
}
// TODO: 여기에 코드를 작성합니다.
}
- for 구문을 안써도 되는 이유
-> 내가 생각한 것은 여러가지 유형의 키가 있는 객체에서 배열을 찾기 위해서 for in구문을 썼지만,
문제를 잘읽어보면 문제에서 입력된 값이 배열인지 확인하는 것이기 때문에 for구문으로 돌릴 필요가 없다.
- (3) 객체 코플릿 (18번) 원본을 헤치지 않는 방법 / pop을 통한 뒷 요소 제거/ slice를 통한 뒷 요소 제거
- 문제: 객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 마지막 요소가 제거된 새로운 배열을 리턴해야 합니다.
- 주의 사항:
- 주어진 키에 해당하는 값이 배열이고, 빈 배열이 아닌 경우에만 마지막 요소가 제거된 배열을 리턴해야 합니다.
- 그 외의 경우, 빈 배열을 리턴해야 합니다.
- 입력받은 객체를 수정하지 않아야 합니다.
- 내가 푼 답안
function getAllButLastElementOfProperty(obj, key) {
let arr= [];
if(Array.isArray(obj[key])===true && obj[key].length !== 0){
//주어진 객체와 그 키의 값이 배열이고 빈 배열이 아닐경우
arr= obj[key].slice();
arr.pop()// 마지막 요소가 제거된 배열을 리턴한다.
return arr;
}else{
return [];
}
// 그게 아닐경우
// 빈배열을 리턴합니다.
// TODO: 여기에 코드를 작성합니다.
}
-
obj[key].slice() 를 통해서 배열을 복사 한다. 그 이유는 원본 객체를 손상하면 안되기 때문이다.
-
pop을 통해서 바로 제거하면 원본이 손상된다 그래서 slice를 사용했다.
-
페어분이 푼 답안
function getAllButLastElementOfProperty(obj, key) {
let arr = [];
if(Array.isArray(obj[key])=== true && obj[key].length !==0){
arr = obj[key].slice(0,obj[key].length-1)
return arr;
}else{
return [];
}
// TODO: 여기에 코드를 작성합니다.
}
- 페어분은 slice라는 함수에서 소환하는 값의 마지막을 정해줘서 (
obj[key].length-1
)그 값을 제거한 후 바로 리턴을 하였다.
-
(4) Object.values(obj) / Object.keys(obj) / Math.max(...arr)
-
코플릿 21번 문제를 풀다가 객체의 key값이나 value값을 배열로 만들어서 가장 큰 값을 구하려고 했을때 찾아본 method입니다. 물론 겨룩 문제를 풀때는 다른 방법으로 접근했지만, 알아둬야 할것 같아서 정리합니다.
-
Object.values()
정의: 전달된 파라미터 객체가 가지는 (열거 가능한) 속성의 값들로 이루어진 배열을 리턴합니다.
const object1 = { a: 'somestring', b: 42, c: false }; console.log(Object.values(object1)); // expected output: Array ["somestring", 42, false]
- Object.keys()
정의: 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.
const object1 = { a: 'somestring', b: 42, c: false }; console.log(Object.keys(object1)); // expected output: Array ["a", "b", "c"]
- Math.max(...arr)
정의: Math.max()함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.
아래는 배열에서 쓰는 경우입니다.
const array1 = [1, 3, 2]; console.log(Math.max(...array1)); // expected output: 3
-
-
(5) for 반복문 continue vs break
- break
정의: break가 있는 지점에서 종료하고 블록을 벗어난다.
let x=1; while(x<20){ if(x===5){ break; } x= x+1; } // 블록의 범위는 while 반복문이다.
x는 20까지 하도록 반복문을 설정하였으나, x가 5가 되는 순간 반복문이 끝나게 된다.
- continue
정의: cotinue문 있는 곳에 아래를 실행하지 않고 블록의 처음으로 가서 반복문을 실행한다.
let x=1; while(x<10){ x= x+1; if(x===5){ continue; } }
결과값은 5가 빠진 채로 찍히게 된다.
- break
Author And Source
이 문제에 관하여(TIL 작성 2021 9/6), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jelkov/TIL-작성-2021-96저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)