@@ -407,35 +407,35 @@ function buildArray (schema, code, name, externalSchema, fullSchema) {
407407 result = schema . items . reduce ( ( res , item , i ) => {
408408 var accessor = '[i]'
409409 const tmpRes = nested ( laterCode , name , accessor , item , externalSchema , fullSchema , i )
410- var condition
410+ var condition = `i === ${ i } && `
411411 switch ( item . type ) {
412412 case 'null' :
413- condition = `obj${ accessor } === null`
413+ condition + = `obj${ accessor } === null`
414414 break
415415 case 'string' :
416- condition = `typeof obj${ accessor } === 'string'`
416+ condition + = `typeof obj${ accessor } === 'string'`
417417 break
418418 case 'integer' :
419- condition = `Number.isInteger(obj${ accessor } )`
419+ condition + = `Number.isInteger(obj${ accessor } )`
420420 break
421421 case 'number' :
422- condition = `!Number.isInteger(obj ${ accessor } ) && Number.isFinite(obj${ accessor } )`
422+ condition + = `Number.isFinite(obj${ accessor } )`
423423 break
424424 case 'boolean' :
425- condition = `typeof obj${ accessor } === 'boolean'`
425+ condition + = `typeof obj${ accessor } === 'boolean'`
426426 break
427427 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`
429429 break
430430 case 'array' :
431- condition = `Array.isArray(obj${ accessor } )`
431+ condition + = `Array.isArray(obj${ accessor } )`
432432 break
433433 default :
434434 throw new Error ( `${ item . type } unsupported` )
435435 }
436436 return {
437437 code : `${ res . code }
438- if (${ condition } ) {
438+ ${ i > 0 ? 'else' : '' } if (${ condition } ) {
439439 ${ tmpRes . code }
440440 }` ,
441441 laterCode : `${ res . laterCode }
0 commit comments