JavaScript数据校验

valid
/**
 * valid
 * 数据校验。
 * 
 * @param obj:Object:数据。
 * @param options:Array:校验设置。
 * 
 * @return bolean
 * 
 */
function valid(obj, options){
	if (Array.isArray(obj)) {
		return obj.every(item => {
			return valid(item, options)
		})
	} else {
		// 展开fieldId
		options = expandField(options, 'fieldId')
		// 迭代处理
		for (option of options) {
			// 数据解构
			let {fieldId, fieldName, maxLength} = option

			// 基本信息
			let value = obj[fieldId]
			let length = value?.length ?? 0
	
			// 最大长度校验
			if (value && maxLength && length > maxLength) {
				gUtil.error(`${fieldName}最大长度为${maxLength}个字符!`)
				return false
			}

			// 数字类型处理
			if (!isNaN(parseFloat(value))) {
				// 值
				let numberValue = parseFloat(value)
				// 最小值校验
				if (min && numberValue < min) {
					gUtil.error(`${fieldName}最小值为${min}!`)
					return false
				}
				// 最大值校验
				if (max && numberValue > max) {
					gUtil.error(`${fieldName}最大值为${max}!`)
					return false
				}
			}
		}
		return true
	}
}
// 数据校验
if (!valid(content, [
	{
		fieldId: 'fieldId', // id(必选)
		fieldName: 'fieldName', // 名称(必选)
		maxLength: 0, // 最大长度(可选)
		min: 0, // 最小值(可选)
		max: 0, // 最大值(可选)
	}
])) {
	return
}
expandField
/**
 * expandField
 * 展开字段域。
 * 
 * @param obj:对象。
 * @param field:字段域。
 * 
 * @return Array:展开后数组。
 * 
 */
function expandField (obj, field) {
	let result = []
	if (Array.isArray(obj)) {
		obj.forEach(item => {
			result.push(expandField (item, field))
		})
	} else {
		if (obj[field] && Array.isArray(obj[field])) {
			obj[field].forEach(fieldItem => {
				let objItem = {...obj}
				objItem[field] = fieldItem
				result.push(objItem)
			})
		} else {
			result.push(obj)
		}
	}
	return result
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值