자바스크립트 재활용 가능 모듈화

노요셉·2021년 2월 1일
0

숫자 데이터

소수점 관리
소수점 이하 아래 버림
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor

toPrecision() : 이건 정확히 모르겠음.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_objects/Number/toPrecision

toFixed(number) :
The number of digits to appear after the decimal point; this may be a value between 0 and 20
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

소수점, 및 천단위 comma 모듈

/**
 * number -> 숫자 서식을 지원하는 객체입니다.
 * https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
 * @param _profit
 */
const numberFormat = (_profit: number, decision: number = 0) => {
  return new Intl.NumberFormat('ko-KR', {maximumFractionDigits: decision, minimumFractionDigits: decision}).format(
    _profit,
  );
};

날짜 데이터

Day.js 기준으로 설명

보통 날짜 데이터를 쓸때 DB에 저장된 datetime을 가지고
날짜간 비교, 해당 datetime 달인지?, 경과를 date, month, year로도 볼 수 있고,
YYYY-MM-DD 형식으로 parse한다든지 모든 일을 dayjs로 할 수 있어요.

참고:
https://john015.github.io/moment-js%EB%A5%BC-day-js%EB%A1%9C-%EB%8C%80%EC%B2%B4%ED%95%98%EA%B8%B0

Date 생성자는 시간의 특정 시점을 나타내는 Date 객체를 생성함.
Date 객체는 1970년 1월 1일 UTC 00:00으로부터 지난 시간을 밀리초로 나타내는 Unix Timestamp를 사용함.

json 형태의 config 값들을 merge하는 코드

// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
const mergeConfigs = (target, configs) => {
  return configs.reduce((acc, cur) => {
    return mergeConfig(acc, cur);
  }, target);
};

// Merge a `source` object to a `target` recursively
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
const mergeConfig = (target, source) => {
  // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties
  for (const key of Object.keys(source)) {
    if (source[key] instanceof Object) Object.assign(source[key], mergeConfig(target[key], source[key]));
  }

  // Join `target` and modified `source`
  Object.assign(target || {}, source);
  return target;
};
profile
서로 아는 것들을 공유해요~

0개의 댓글