对于复杂数据,使用element自带的方法可能不能满足我们的需求,所以可以封装一个公共方法在全局。
一、清空表单数据:文章来源:https://www.toymoban.com/news/detail-546910.html
// 取消
canalHandle() {
this.resetValue(this.ruleForm)
this.dialogVisible = false
},
//------------------ 公共方法 ---------------------------
// 重置条件
returnNormalValue(value) {
if (typeof value === 'string') {
return ''
}
if (typeof value === 'number') {
return 0
}
const toStrong = Object.prototype.toString
const type = toStrong.call(value)
if (type.includes('Date')) {
return new Date()
}
if (type.includes('Object')) {
return {}
}
if (type.includes('Array')) {
return []
}
},
// 重置条件
resetValue(data) {
const searchForm = data
for (const key in searchForm) {
if (Object.hasOwnProperty.call(searchForm, key)) {
searchForm[key] = this.returnNormalValue(searchForm[key])
}
}
}
二、删除对象中的空属性:文章来源地址https://www.toymoban.com/news/detail-546910.html
//使用方式
let params = {
pageNum: this.pagesUp.pageNum,
pageSize: this.pagesUp.pageSize,
viewId: this.currentViewId,
...this.searchForm
}
params = delNullProperty(params)
//------------------------ 公共方法 --------------------------------
/**
* 删除对象中的空属性
* @param obj
* @returns
*/
export const delNullProperty = (obj) => {
if (!obj) return
const temp = JSON.parse(JSON.stringify(obj))
for (const i in temp) {
// 遍历对象中的属性
if (temp[i] === undefined || temp[i] === null || temp[i] === '') {
// 首先除去常规空数据,用delete关键字
delete temp[i]
} else if (temp[i].constructor === Object) {
// 如果发现该属性的值还是一个对象,再判空后进行迭代调用
if (Object.keys(temp[i]).length === 0) delete temp[i] // 判断对象上是否存在属性,如果为空对象则删除
delNullProperty(temp[i])
} else if (temp[i].constructor === Array) {
// 对象值如果是数组,判断是否为空数组后进入数据遍历判空逻辑
if (temp[i].length === 0) {
// 如果数组为空则删除
delete temp[i]
} else {
for (let index = 0; index < temp[i].length; index++) {
// 遍历数组
if (
temp[i][index] === undefined ||
temp[i][index] === null ||
temp[i][index] === '' ||
JSON.stringify(temp[i][index]) === '{}'
) {
temp[i].splice(index, 1) // 如果数组值为以上空值则修改数组长度,移除空值下标后续值依次提前
index-- // 由于数组当前下标内容已经被替换成下一个值,所以计数器需要自减以抵消之后的自增
}
if (temp[i].constructor === Object) {
// 如果发现数组值中有对象,则再次进入迭代
delNullProperty(temp[i])
}
}
}
}
}
return temp
}
到了这里,关于vuejs清空表单数据、删除对象中的空属性公共方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!