>  기사  >  웹 프론트엔드  >  JavaScript에서 객체에 대한 사용자 정의 'filter()' 메서드를 구현하는 방법은 무엇입니까?

JavaScript에서 객체에 대한 사용자 정의 'filter()' 메서드를 구현하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-13 12:13:02771검색

How to Implement a Custom `filter()` Method for Objects in JavaScript?

JavaScript: 객체에 대한 사용자 정의 filter() 메서드 구현

ECMAScript 5 사양에서는 배열에 대한 filter() 프로토타입을 도입하지만 물건을 위해. JavaScript의 내장 객체를 확장하는 것은 일반적으로 권장되지 않습니다. 그러나 원하는 경우 다음 접근 방식을 사용하여 객체에 대한 사용자 정의 filter() 기능을 만들 수 있습니다.

1. Reduce() 및 Object.keys() 사용

Object.filter = (obj, predicate) =>
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .reduce((res, key) => (res[key] = obj[key], res), {});

// Example:
const scores = {
  John: 2,
  Sarah: 3,
  Janet: 1
};
const filtered = Object.filter(scores, score => score > 1);
console.log(filtered);

2. Object.Assign()

Object.filter = (obj, predicate) =>
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {});

// Example: same as above

과 함께 Reduce() 및 Object.keys() 사용3. map() 및 스프레드 구문 사용

Object.filter = (obj, predicate) =>
  Object.fromEntries(
    Object.entries(obj)
      .filter(([key, value]) => predicate(value))
      .map(([key, value]) => [key, value])
  );

// Example: same as above

4. Object.entries() 및 Object.fromEntries() 사용

Object.filter = (obj, predicate) =>
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );

// Example: same as above

내장 프로토타입을 확장하면 의도하지 않은 결과가 발생할 수 있다는 점을 기억하세요. 일반적으로 사용자 정의 기능을 독립 실행형 유틸리티로 제공하거나 특정 기능을 위해 전역 개체를 확장하는 것이 좋습니다.

위 내용은 JavaScript에서 객체에 대한 사용자 정의 'filter()' 메서드를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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