File tree 1 file changed +23
-9
lines changed
1 file changed +23
-9
lines changed Original file line number Diff line number Diff line change 1
1
export default function filterObject ( object , predicate ) {
2
2
const result = { } ;
3
- const isArray = Array . isArray ( predicate ) ;
4
3
5
- for ( const [ key , value ] of Object . entries ( object ) ) {
6
- if ( isArray ? predicate . includes ( key ) : predicate ( key , value , object ) ) {
7
- Object . defineProperty ( result , key , {
8
- value,
9
- writable : true ,
10
- enumerable : true ,
11
- configurable : true ,
12
- } ) ;
4
+ if ( Array . isArray ( predicate ) ) {
5
+ const set = new Set ( predicate ) ;
6
+ for ( const key of Object . keys ( object ) ) {
7
+ if ( set . has ( key ) ) {
8
+ const value = object [ key ] ;
9
+ Object . defineProperty ( result , key , {
10
+ value,
11
+ writable : true ,
12
+ enumerable : true ,
13
+ configurable : true ,
14
+ } ) ;
15
+ }
16
+ }
17
+ } else {
18
+ for ( const [ key , value ] of Object . entries ( object ) ) {
19
+ if ( predicate ( key , value , object ) ) {
20
+ Object . defineProperty ( result , key , {
21
+ value,
22
+ writable : true ,
23
+ enumerable : true ,
24
+ configurable : true ,
25
+ } ) ;
26
+ }
13
27
}
14
28
}
15
29
You can’t perform that action at this time.
0 commit comments