Skip to content

Commit 76222cf

Browse files
author
Vlad Balin
committed
collection.some, .every, .filter
1 parent a90fb8a commit 76222cf

File tree

5 files changed

+56
-4
lines changed

5 files changed

+56
-4
lines changed

dist/collection/index.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export declare class Collection extends Transactional implements CollectionCore
3333
_onChildrenChange(record: Record, options?: TransactionOptions, initiator?: Transactional): void;
3434
get(objOrId: string | Record | Object): Record;
3535
each(iteratee: (val: Record, key: number) => void, context?: any): void;
36+
every(iteratee: (val: Record, key: number) => boolean, context?: any): boolean;
37+
filter(iteratee: (val: Record, key: number) => boolean, context?: any): Record[];
38+
some(iteratee: (val: Record, key: number) => boolean, context?: any): boolean;
3639
map<T>(iteratee: (val: Record, key: number) => T, context?: any): T[];
3740
_validateNested(errors: {}): number;
3841
model: typeof Record;

dist/index.js

Lines changed: 21 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "type-r",
3-
"version": "1.0.0-rc94",
3+
"version": "1.0.0-rc95",
44
"description": "Reactive objects with transactional updates and automatic serialization",
55
"main": "./dist/index.js",
66
"types": "./dist/index.d.ts",

src/collection/index.ts

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,37 @@ export class Collection extends Transactional implements CollectionCore {
189189
}
190190
}
191191

192+
every( iteratee : ( val : Record, key : number ) => boolean, context? : any ) : boolean {
193+
const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,
194+
{ models } = this;
195+
196+
for( let i = 0; i < models.length; i++ ){
197+
if( !fun( models[ i ], i ) ) return false;
198+
}
199+
200+
return true;
201+
}
202+
203+
filter( iteratee : ( val : Record, key : number ) => boolean, context? : any ) : Record[] {
204+
const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,
205+
{ models } = this;
206+
207+
return this.map( ( x, i ) => fun( x, i ) ? x : void 0 );
208+
}
209+
210+
some( iteratee : ( val : Record, key : number ) => boolean, context? : any ) : boolean {
211+
const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,
212+
{ models } = this;
213+
214+
for( let i = 0; i < models.length; i++ ){
215+
if( fun( models[ i ], i ) ) return true;
216+
}
217+
218+
return false;
219+
}
220+
192221
map< T >( iteratee : ( val : Record, key : number ) => T, context? : any ) : T[]{
193-
const fun = arguments.length === 2 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,
222+
const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,
194223
{ models } = this,
195224
mapped = Array( models.length );
196225

0 commit comments

Comments
 (0)