> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 개체에서 Null 및 정의되지 않은 속성을 제거하는 방법은 무엇입니까?

JavaScript 개체에서 Null 및 정의되지 않은 속성을 제거하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-27 11:39:11
원래의
963명이 탐색했습니다.

How to Remove Null and Undefined Attributes from a JavaScript Object?

Javascript의 객체에서 빈 속성 제거

JavaScript 객체로 작업할 때 정의되지 않았거나 null인 속성을 제거해야 할 수도 있습니다. . 이는 데이터를 정리하고, 불필요한 필드를 제거하거나, 저장을 위해 개체를 준비하는 데 도움이 될 수 있습니다. 사용되는 JavaScript 버전에 따라 이 작업을 수행하는 방법에는 여러 가지가 있습니다.

ES10/ES2019

ES10/ES2019에서 가장 간단한 접근 방식은 다음을 사용하는 것입니다. 비어 있지 않은 항목만 포함하는 새 개체를 만드는 Object.fromEntries() 메서드 속성:

let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
로그인 후 복사

함수로 작성할 수도 있습니다:

function removeEmpty(obj) {
  return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
}
로그인 후 복사

중첩 객체의 경우 재귀 함수를 사용할 수 있습니다:

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

에서 ES6/ES2015에서는 다음 한 줄짜리 코드를 사용할 수 있지만 새 객체를 생성하는 대신 원래 객체를 변경한다는 점에 유의하세요.

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 }), {});
}
로그인 후 복사

중첩된 개체의 경우 다음 재귀 함수를 사용할 수 있습니다.

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

ES5/ ES2009, 코드가 더 많습니다. verbose:

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 버전의 개체에서 빈 속성을 효과적으로 제거하여 데이터를 정리하고 추가 처리 또는 처리 준비가 완료되도록 할 수 있습니다. 저장합니다.

위 내용은 JavaScript 개체에서 Null 및 정의되지 않은 속성을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿