예시
const obj = { key: [1000, 20, 50, 500], }; let output = getElementsLessThan100AtProperty(obj, 'key'); console.log(output); // --> [20, 50]
생각
- key에 해당하는 배열 중 100보다 작은 놈들만 뽑아내서 리턴하자(filter)
- 근데 그 외의 경우는 배열이 아닌경우 or 숫자가 아닌 경우다 예외 케이스를 만들자
- 배열이 아니면 빈 배열 리턴, 배열에서 숫자가 아닌 요소가 있으면 false 처리
풀이
function lessThan100(number) { if(typeof(number) !== 'number'){ return false; } return number < 100; } function getElementsLessThan100AtProperty(obj, property) { if(!Array.isArray(obj[property])){ return [] } const output = obj[property].filter(num => lessThan100(num)) return output }
깨달은 점
- lettThan100을 그대로 사용하지 않고 조건을 추가해서 풀어서 문제를 완벽하게 푼 게 아니다. 레퍼런스를 보니 너무 어려워서 못 풀겠더라. 이렇게라도 풀어서 전개과정만 이해해도 좋다고 생각한다.
- property의 value가 배열이 아닌 경우는 !Array.isArray, 빈 배열은 .length === 0 을 이용하는 틀을 기억하기