1 minute read

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 값을 넣어서 빈 객체 생성

    맵핑 함수를 넣어서 추가 조작

Categories:

Updated: