객체에 대한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!