TS 로 python range 구현하기 part 2
TS 로 python range 구현하기 part 2
Array.from
-
part 1 의 code
function range(...args: number[]): number[] | undefined { let res = []; if (args.length === 1) { for (let i = 0; i < args[0]; i++) { res.push(i); } } if (args.length === 2) { for (let i = args[0]; i < args[1]; i++) { res.push(i); } } if (args.length === 3) { for (let i = args[0]; i < args[1]; ) { res.push(i); i += args[2]; } } if (res.length > 0) { return res; } else { return undefined; } }
for 문 위주의 코드라 코드가 너무 길어짐
리팩토링,,,못 참아,,,!!!!
-
이번 코드
function rangeArray(...args: number[]): number[] | Error | undefined { if (args.length === 1) { return Array.from({ length: args[0] }, (ele, index) => index); } if (args.length === 2) { return Array.from({ length: args[0] }, (ele, index) => index + args[1]); } if (args.length === 3) { return Array.from( { length: args[0] }, (ele, index) => index * args[2] + args[1] ); } if (args.length > 3) { return Error("파라미터에는 3개 이상 들어가지 않습니다"); } }
Array.from() 은 이터러블이나 유사 배열을 받아 Array 로 만들어 줌
대상 객체인 빈 객체를 하나 만들고 length 값을 넣어서 빈 객체 생성
맵핑 함수를 넣어서 추가 조작