@@ -407,35 +407,35 @@ function buildArray (schema, code, name, externalSchema, fullSchema) {
407
407
result = schema . items . reduce ( ( res , item , i ) => {
408
408
var accessor = '[i]'
409
409
const tmpRes = nested ( laterCode , name , accessor , item , externalSchema , fullSchema , i )
410
- var condition
410
+ var condition = `i === ${ i } && `
411
411
switch ( item . type ) {
412
412
case 'null' :
413
- condition = `obj${ accessor } === null`
413
+ condition + = `obj${ accessor } === null`
414
414
break
415
415
case 'string' :
416
- condition = `typeof obj${ accessor } === 'string'`
416
+ condition + = `typeof obj${ accessor } === 'string'`
417
417
break
418
418
case 'integer' :
419
- condition = `Number.isInteger(obj${ accessor } )`
419
+ condition + = `Number.isInteger(obj${ accessor } )`
420
420
break
421
421
case 'number' :
422
- condition = `!Number.isInteger(obj ${ accessor } ) && Number.isFinite(obj${ accessor } )`
422
+ condition + = `Number.isFinite(obj${ accessor } )`
423
423
break
424
424
case 'boolean' :
425
- condition = `typeof obj${ accessor } === 'boolean'`
425
+ condition + = `typeof obj${ accessor } === 'boolean'`
426
426
break
427
427
case 'object' :
428
- condition = `obj${ accessor } && typeof obj${ accessor } === 'object' && obj${ accessor } .constructor === Object`
428
+ condition + = `obj${ accessor } && typeof obj${ accessor } === 'object' && obj${ accessor } .constructor === Object`
429
429
break
430
430
case 'array' :
431
- condition = `Array.isArray(obj${ accessor } )`
431
+ condition + = `Array.isArray(obj${ accessor } )`
432
432
break
433
433
default :
434
434
throw new Error ( `${ item . type } unsupported` )
435
435
}
436
436
return {
437
437
code : `${ res . code }
438
- if (${ condition } ) {
438
+ ${ i > 0 ? 'else' : '' } if (${ condition } ) {
439
439
${ tmpRes . code }
440
440
}` ,
441
441
laterCode : `${ res . laterCode }
0 commit comments