logo

객체 오름차순 정렬, 객체 같은지 비교

  • 객체 오름 차순 정렬
function sortObjectByKeys(obj) {
    return Object.keys(obj)
        .sort() // 키를 오름차순으로 정렬
        .reduce((sortedObj, key) => {
            sortedObj[key] = obj[key];
            return sortedObj;
        }, {});
}
  • 객체 내림 차순 정렬
function sortObjectByKeysDescending(obj) {
  return Object.keys(obj)
    .sort((a, b) => b.localeCompare(a)) // 키를 내림차순으로 정렬
    .reduce((sortedObj, key) => {
      sortedObj[key] = obj[key]; // 정렬된 키 순서대로 새 객체에 삽입
      return sortedObj;
    }, {});
}
  • 같은 객체인지 내부 키와 값 비교
function areObjectsEqual(obj1, obj2) {
    if (Object.keys(obj1).length !== Object.keys(obj2).length) return false;
    for (let key in obj1) {
        if (obj1[key] !== obj2[key]) return false;
    }
    return true;
}
읽는 시간 1분

openSSL 레거시모드 활성화 방법

node.js 버전업 이후에, 스크립트를 불러올 때, 에러가 뜰 때가 있다.

openSSL 에러가 날 때는, 레거시모드를 활성화 해보자.

export NODE_OPTIONS=--openssl-legacy-provider

"scripts": {
  "build": "NODE_OPTIONS=--openssl-legacy-provider webpack --mode production"
}
읽는 시간 1분

부동 소수점

JavaScript에서 부동소수점은 숫자를 표현하기 위해 IEEE 754 표준의 64비트 부동소수점 형식을 사용합니다.

일부 숫자를 정확하게 표현하지 못하고 오차가 발생할 수 있습니다.

부동소수점의 문제점

  1. 이진수 표현의 한계: 일부 십진수 소수는 이진수로 정확하게 표현될 수 없습니다. 예를 들어, 0.1이나 0.2와 같은 숫자는 이진 부동소수점으로 표현할 때 무한소수가 되어 근사치로 저장됩니다.
console.log(0.1 + 0.2); // 예상: 0.3, 실제: 0.30000000000000004
  1. 정밀도 손실: 계산 과정에서 작은 오차들이 누적되어 큰 오차로 이어질 수 있습니다. 이는 특히 반복 계산이나 금융 계산에서 문제가 됩니다.

해결책

  1. toFixed() 메서드 사용

toFixed() 메서드는 숫자를 지정된 소수점 자리까지 반올림하여 문자열로 반환합니다.

읽는 시간 2분