去除对象中的原始值属性、引用值属性值为空的属性——函数封装
在工作中,在调取接口时,经常需要往后端传递数据,如果后端那边没有对数据进行处理的话,则会因为一些空的数据导致接口调取失败。。
var obj = { "supplierId":0,"distributionChannel":null,"channelCount":0,"capacities":[{ "brandId":null,"leadTime":null,"payCondition":null}],"customers":[{ "name":null,"type":null,"brandName":null,"cooperationTime":null,"usedOfYear":null,"amount":null}],"productionDevices":[{ "name":null,"count":null}],"testingDevices":[{ "name":null,"count":null}],"artisanDevices":[{ "name":null,"count":null}],"honors":[{ "name":null,"year":2020,"picture":null,"issuingAuthority":null}],"staffs":[{ "name":null,"post":null,"characteristic":null,"background":null}],"talks":[{ "talkObject":null,"place":null,"organization":null,"companyPlanning":null,"productPlanning":null,"advantage":null,"shortcoming":null,"cooperation":null,"cooperationReason":null,"score":null,"scoreReason":null,"summary":null,"interviewer":null}]}
格式化一下,对象的结构如下:
注意这个对象中,有原始值也有数组格式的引用值,数据中的每一项又是对象格式的引用值。。
要把上面的对象将属性值为null
的属性去掉的话,就需要循环遍历,去除null
和""
空字符串的函数封装如下:
function filterObj(obj) {
for (let key in obj) {
if (typeof obj[key] == 'object') {
if (Array.isArray(obj[key])) {
//数组
obj[key].forEach((o, oIndex) => {
for (let k in o) {
if (o[k] == null || o[k] == "") {
delete o[k];
}
}
if (o == { }) {
obj[key].splice(oIndex, 1);
}
})
} else {
if (obj[key] == null || obj[key] == "") {
delete obj[key];
}
}
} else {
if (obj[key] == null || obj[key] == "") {
delete obj[key];
}
}
}
for (let k in obj) {
if (typeof obj[k] == 'object') {
if (Array.isArray(obj[k])) {
for (var i = 0; i < obj[k].length; i++) {
if (Object.keys(obj[k][i]).length == 0) {
obj[k].splice(i, 1);
}
}
}
}
}
return obj;
}
控制台演示效果如下:
还没有评论,来说两句吧...