去除对象中的原始值属性、引用值属性值为空的属性——函数封装

阳光穿透心脏的1/2处 2022-10-16 06:24 265阅读 0赞

在工作中,在调取接口时,经常需要往后端传递数据,如果后端那边没有对数据进行处理的话,则会因为一些空的数据导致接口调取失败。。

  1. 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""空字符串的函数封装如下:

  1. function filterObj(obj) {
  2. for (let key in obj) {
  3. if (typeof obj[key] == 'object') {
  4. if (Array.isArray(obj[key])) {
  5. //数组
  6. obj[key].forEach((o, oIndex) => {
  7. for (let k in o) {
  8. if (o[k] == null || o[k] == "") {
  9. delete o[k];
  10. }
  11. }
  12. if (o == { }) {
  13. obj[key].splice(oIndex, 1);
  14. }
  15. })
  16. } else {
  17. if (obj[key] == null || obj[key] == "") {
  18. delete obj[key];
  19. }
  20. }
  21. } else {
  22. if (obj[key] == null || obj[key] == "") {
  23. delete obj[key];
  24. }
  25. }
  26. }
  27. for (let k in obj) {
  28. if (typeof obj[k] == 'object') {
  29. if (Array.isArray(obj[k])) {
  30. for (var i = 0; i < obj[k].length; i++) {
  31. if (Object.keys(obj[k][i]).length == 0) {
  32. obj[k].splice(i, 1);
  33. }
  34. }
  35. }
  36. }
  37. }
  38. return obj;
  39. }

控制台演示效果如下:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,265人围观)

还没有评论,来说两句吧...

相关阅读