JavaScript: 객체에 대한 filter() 구현
JavaScript는 배열 유형에 대한 filter() 프로토타입을 제공하지만 객체에는 이 기능이 없습니다. 유형. 이러한 제한 사항을 해결하기 위해 객체에 대해 특별히 filter() 구현을 생성하는 방법을 살펴보겠습니다.
구현:
Object.prototype.filter = function(predicate) { var result = {}; for (key in this) { if (this.hasOwnProperty(key) && !predicate(this[key])) { result[key] = this[key]; } } return result; };
이 구현은 독립적으로 작동하는 반면, jQuery 1.5 및 jQuery UI 1.8.9를 사용하는 사이트에 추가하면 JavaScript 오류가 발생할 수 있습니다.
대체 솔루션:
객체 프로토타입을 수정하는 대신 다음을 고려하세요. 유틸리티 기능:
1. 축소 및 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.entries(obj) .filter(([key, value]) => predicate(value)) .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
3. Object.entries 및 Object.fromEntries 사용:
Object.filter = (obj, predicate) => Object.fromEntries( Object.entries(obj).filter(([key, value]) => predicate(value)) );
사용 예:
var scores = { John: 2, Sarah: 3, Janet: 1 }; var filtered = Object.filter(scores, score => score > 1); console.log(filtered);
이러한 대체 솔루션은 원본 개체를 유지하면서 개체 속성을 필터링합니다.
위 내용은 JavaScript 객체에 `filter()` 메서드를 어떻게 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!