@@ -233,6 +233,8 @@ const THRESHOLD = 100;
233233 * @public
234234 */
235235export function type ( array : any [ ] ) : FieldInfo {
236+ // debugger;
237+
236238 const list = array . map ( ( item ) => ( isNull ( item ) ? null : item ) ) ;
237239 const valueMap = Stat . valueMap ( list ) ;
238240 let recommendation : TypeSpecifics ;
@@ -280,15 +282,20 @@ export function type(array: any[]): FieldInfo {
280282
281283 if ( types . length > 1 ) {
282284 const meta : FieldMeta = { } ;
285+ let restNotNullArray = nonNullArray ;
283286 types . forEach ( ( item : string ) => {
284287 if ( item === 'date' ) {
285- meta . date = type ( nonNullArray . filter ( isDate ) ) as DateFieldInfo ;
288+ meta . date = type ( restNotNullArray . filter ( isDate ) ) as DateFieldInfo ;
289+ restNotNullArray = restNotNullArray . filter ( ( item ) => ! isDate ( item ) ) ;
286290 } else if ( item === 'integer' ) {
287- meta . integer = type ( nonNullArray . filter ( isInteger ) ) as NumberFieldInfo ;
291+ meta . integer = type ( restNotNullArray . filter ( isInteger ) ) as NumberFieldInfo ;
292+ restNotNullArray = restNotNullArray . filter ( ( item ) => ! isInteger ( item ) ) ;
288293 } else if ( item === 'float' ) {
289- meta . float = type ( nonNullArray . filter ( isFloat ) ) as NumberFieldInfo ;
294+ meta . float = type ( restNotNullArray . filter ( isFloat ) ) as NumberFieldInfo ;
295+ restNotNullArray = restNotNullArray . filter ( ( item ) => ! isFloat ( item ) ) ;
290296 } else if ( item === 'string' ) {
291- meta . string = type ( nonNullArray . filter ( ( item ) => WhatType ( item ) === 'string' ) ) as StringFieldInfo ;
297+ meta . string = type ( restNotNullArray . filter ( ( item ) => WhatType ( item ) === 'string' ) ) as StringFieldInfo ;
298+ restNotNullArray = restNotNullArray . filter ( ( item ) => WhatType ( item ) !== 'string' ) ;
292299 }
293300 } ) ;
294301 fieldInfo . meta = meta ;
0 commit comments