2021년 1월 1일 복기

Ji Taek Lim·2021년 1월 1일
0

오늘의 학습을 해보겠다.

underbar를 다풀었는데 내가 풀지 않았으니까 조금 헷갈리기도 하는것같다.

_.sortBy

// .sortBy는 배열의 각 요소에 함수 transform을 적용하여 얻은 결과를 기준으로 정렬합니다.
// transform이 전달되지 않은 경우, 배열의 요소 값 자체에 대한 비교 연산자의 결과를 따릅니다.
// 예를 들어, number 타입간 비교는 대소 비교이고 string 타입간 비교는 사전식(lexical) 비교입니다.
// 세 번째 인자인 order는 정렬의 방향을 나타냅니다. 생략되거나 1을 입력받은 경우 오름차순, -1을 입력받은 경우 내림차순으로 정렬합니다.
// 아래 예제를 참고하시기 바랍니다.
// const people = [
// { id: 1, age: 27 },
// { id: 2, age: 24 },
// { id: 3, age: 26 },
// ];
// function byAge(obj) {
// return obj.age;
// };
// const result =
.sortBy(people, byAge);
// console.log(result); // --> [{ id: 2, age: 24 }, { id: 3, age: 26 }, { id: 1, age: 27 }]

// 한편, 'undefined'는 비교 연산은 가능하지만 사실 비교가 불가능한(비교의 의미가 없는) 데이터입니다.
// 아래 예제를 참고하시기 바랍니다.
// console.log(undefined > 0); // --> false
// console.log(undefined < 0); // --> false
// console.log(undefined == 0); // --> false
// console.log(undefined === 0); // --> false
// console.log(undefined > 'hello'); // --> false
// console.log(undefined < 'hello'); // --> false
// 이러한 이유로 정렬하려는 데이터들 중 'undefined'가 있는 경우,
// 1) 'undefined' 값을 제외(filter)하고 비교하거나
// 2) 'undefined' 값을 어떤 다른 값으로 간주하여 비교해야 합니다.
// 이번 스프린트에서는 2)번의 방식을 적용하였습니다.
// 마지막 테스트 케이스의 transform 함수(byHeightAsc)를 확인하시기 바랍니다.

// 힌트
// 1. Array.prototype.sort를 사용할 수 있습니다.
// 참고 문서: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
// 예제를 통해 내장 메소드 sort의 특성을 꼭 확인하시기 바랍니다.
// 2. _.identity를 사용할 수 있습니다.

// 이번 스프린트는 정렬 자체를 다루지 않으니 스프린트 이후에 스스로 학습하시기 바랍니다.
// 학습 우선순위: bubble sort, insertion sort, quick sort, merge sort, radix sort

JSON

    1. Broswer에 존재하는 JSON.stringfy 함수를 직접구현해봅니다.
  • JSON.stringfy 함수는 input 값을 JSON 형식으로 변환합니다.
  • 단, undefind와 function은 JSON으로 생략되거나 null 로 변환됩니다.
    1. stringfyJSON은 아래와 같이 작동합니다.
    • Bolean이 input으로 주어졌을 경우
  • stringifyJSON(true); // 'true'
    • String이 input으로 주어졌을 경우
  • stringifyJSON('foo'); // '"foo"'
    • Array가 input으로 주어졌을 경우
  • stringifyJSON([1, 'false', false]); // '[1,"false",false]'
    • Object가 input으로 주어졌을 경우
  • stringifyJSON({ x: 5 }); // '{"x":5}'
    • undefind, function이 주어졌을 경우
  • stringifyJSON(undefined) // undefined
  • stringifyJSON(function(){}) // undefined
  • stringifyJSON({ x: undefined, y: function(){} }) // '{}'
    1. spec/fixtures.js를 참고해서 테스트에서 어떤 input 값들이
  • 주어지고, 어떻게 stringify해 주어야할지 생각해 보세요.
    1. 그냥 테스트 통과를 하고 싶으시다면, 다음과 같이 구현하면 될거예요.
  • const stringifyJSON = JSON.stringify;
  • 하지만 이 과제의 목적은 재귀를 공부하는 것이니, 처음부터 구현해봐야겠지요?:
    */
profile
임지택입니다.

0개의 댓글