> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 개체의 속성을 필터링하려면 어떻게 해야 합니까?

JavaScript 개체의 속성을 필터링하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-11 20:46:03
원래의
469명이 탐색했습니다.

How Can I Filter Properties in a JavaScript Object?

객체에 대한 JavaScript filter() 메서드

Array 유형에는 filter() 메서드가 있지만 Object 유형에는 없습니다. 이 문서의 목적은 이러한 메서드를 구현하기 위한 솔루션을 제공하는 것입니다.

사용자 정의 개체 필터 구현

한 가지 접근 방식은 Object.prototype을 확장하는 것입니다.

Object.prototype.filter = function(predicate) {
    var result = {};

    for (key in this) {
        if (this.hasOwnProperty(key) && !predicate(this[key])) {
            result[key] = this[key];
        }
    }

    return result;
};
로그인 후 복사

대체 솔루션

그러나 글로벌 프로토타입을 확장하는 것은 일반적으로 권장되지 않습니다. 대신 다음 대안을 고려해 보세요.

1. Reduce 및 Object.keys 사용

Object.filter = (obj, predicate) =>
    Object.keys(obj)
        .filter(key => predicate(obj[key]))
        .reduce((res, key) => (res[key] = obj[key], res), {});
로그인 후 복사

2. 맵 및 스프레드 구문

Object.filter = (obj, predicate) =>
    Object.fromEntries(
        Object.entries(obj)
            .filter(([key, value]) => predicate(value))
            .map(([key, value]) => [key, value])
    );
로그인 후 복사

3. Object.할당

const filter = (obj, predicate) =>
    Object.assign(
        {},
        ...Object.keys(obj)
            .filter(key => predicate(obj[key]))
            .map(key => ({[key]: obj[key]}))
    );
로그인 후 복사

사용예

var foo = { bar: "Yes", moo: undefined };

var filtered = Object.filter(foo, property => typeof property === "undefined");

console.log(filtered); // { moo: undefined }
로그인 후 복사

위 내용은 JavaScript 개체의 속성을 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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