>웹 프론트엔드 >JS 튜토리얼 >JavaScript 객체에서 null 및 정의되지 않은 속성을 효율적으로 제거하려면 어떻게 해야 합니까?

JavaScript 객체에서 null 및 정의되지 않은 속성을 효율적으로 제거하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 00:33:10702검색

How can I efficiently remove null and undefined attributes from JavaScript objects?

JavaScript 개체에서 빈 속성 제거

데이터 개체를 처리할 때 정의되지 않았거나 null로 설정된 속성을 제거해야 하는 경우가 많습니다. 이 문서에서는 다양한 JavaScript 버전과 기술을 사용하여 이 문제에 대한 솔루션을 제공합니다.

ES10/ES2019 솔루션

Object.fromEntries를 사용한 One-Liner

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));

객체를 사용한 함수. from항목 및 재귀

function removeEmpty(obj) {
  return Object.fromEntries(
    Object.entries(obj)
      .filter(([_, v]) => v != null)
      .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v])
  );
}

ES6/ES2015 솔루션

변이가 있는 One-Liner

Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);

변이가 없는 단일 선언

let o = Object.keys(obj)
  .filter((k) => obj[k] != null)
  .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});

재귀가 있는 함수

function removeEmpty(obj) {
  return Object.entries(obj)
    .filter(([_, v]) => v != null)
    .reduce((acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }), {});
}

ES5/ES2009 솔루션

비재귀적 기능적 스타일

function removeEmpty(obj) {
  return Object.keys(obj)
    .filter(function (k) {
      return obj[k] != null;
    })
    .reduce(function (acc, k) {
      acc[k] = obj[k];
      return acc;
    }, {});
}

비재귀적 명령형

function removeEmpty(obj) {
  const newObj = {};
  Object.keys(obj).forEach(function (k) {
    if (obj[k] && typeof obj[k] === "object") {
      newObj[k] = removeEmpty(obj[k]);
    } else if (obj[k] != null) {
      newObj[k] = obj[k];
    }
  });
  return newObj;
}

재귀적 기능적 스타일

function removeEmpty(obj) {
  return Object.keys(obj)
    .filter(function (k) {
      return obj[k] != null;
    })
    .reduce(function (acc, k) {
      acc[k] = typeof obj[k] === "object" ? removeEmpty(obj[k]) : obj[k];
      return acc;
    }, {});
}

위 내용은 JavaScript 객체에서 null 및 정의되지 않은 속성을 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.