javascript去掉对象或数组中的’’,null,undefined,[],{}。
    思路就是创建一个新的空对象,然后对传入的对象进行遍历,只把符合条件的属性返回,保留有效值,然后就相当于把空值去掉了。
    (可以根据注释来修改方法决定要去除哪些属性)

    1. function removeEmptyField(obj) {
    2. var newObj = {}
    3. if (typeof obj === 'string') {
    4. obj = JSON.parse(obj)
    5. }
    6. if (obj instanceof Array) {
    7. newObj = []
    8. }
    9. if (obj instanceof Object) {
    10. for (var attr in obj) {
    11. // 属性值不为'',null,undefined才加入新对象里面(去掉'',null,undefined)
    12. if (obj.hasOwnProperty(attr) && obj[attr] !== '' && obj[attr] !== null && obj[attr] !== undefined) {
    13. if (obj[attr] instanceof Object) {
    14. // 空数组或空对象不加入新对象(去掉[],{})
    15. if(JSON.stringify(obj[attr]) === '{}' || JSON.stringify(obj[attr]) === '[]') {
    16. continue
    17. }
    18. // 属性值为对象,则递归执行去除方法
    19. newObj[attr] = removeEmptyField(obj[attr])
    20. } else if (
    21. typeof obj[attr] === 'string' &&
    22. ((obj[attr].indexOf('{') > -1 && obj[attr].indexOf('}') > -1) ||
    23. (obj[attr].indexOf('[') > -1 && obj[attr].indexOf(']') > -1))
    24. ) {
    25. // 属性值为JSON时
    26. try {
    27. var attrObj = JSON.parse(obj[attr])
    28. if (attrObj instanceof Object) {
    29. newObj[attr] = removeEmptyField(attrObj)
    30. }
    31. } catch (e) {
    32. newObj[attr] = obj[attr]
    33. }
    34. } else {
    35. newObj[attr] = obj[attr]
    36. }
    37. }
    38. }
    39. }
    40. return newObj
    41. }
    42. const testObj = {
    43. a: '',
    44. b: 123,
    45. c: null,
    46. d: undefined,
    47. e: [],
    48. f: [1,2,3,'',null],
    49. g: {},
    50. h: {x:1,y:'',z:null}
    51. }
    52. console.log(removeEmptyField(testObj))
    53. console.log(JSON.stringify(removeEmptyField(testObj)))

    原文链接:https://www.cnblogs.com/chifung/p/13600044.html