检查是否为空&;使用jQuery和JavaScript将对象中的所有属性替换为空字符串

检查是否为空&;使用jQuery和JavaScript将对象中的所有属性替换为空字符串,javascript,jquery,promise,deferred,Javascript,Jquery,Promise,Deferred,我有一个JSON对象,它包括其他对象和对象列表。必须编写一个函数,该函数迭代对象的所有属性以及对象中的对象和对象列表,并用空字符串替换null 因为它是循环中的循环,所以我需要实现延迟的顺序处理。我尝试了很多方法,但都失败了。任何人都请帮忙 function ValidateObject(result) { var aObj = result.A; aObj = VerifyForNull(aoBJ); var bObj = result.B; bObj = VerifyForN

我有一个JSON对象,它包括其他对象和对象列表。必须编写一个函数,该函数迭代对象的所有属性以及对象中的对象和对象列表,并用空字符串替换
null

因为它是循环中的循环,所以我需要实现延迟的顺序处理。我尝试了很多方法,但都失败了。任何人都请帮忙

function ValidateObject(result) {
  var aObj = result.A;
  aObj = VerifyForNull(aoBJ);
  var bObj = result.B;
  bObj = VerifyForNull(bObJ);
  for (var i = 0; i < result.C.length; i++) {
    var cObj = result.C[i];
    cObj = VerifyForNull(cObJ);
    for (var j = 0; j < cObj.D.length; j++) {
      var dObj = cObj.D[i];
      dObj = VerifyForNull(dObj);
    }
  }
}

function VerifyForNull(obj) {
  Object.keys(obj).forEach(function(key) {
    var val = obj[key];
    if (val == null || value === undefined) {
      obj[key] = "";
    }
  });
}
函数验证对象(结果){
var aObj=结果A;
aObj=验证为空(aObj);
var bObj=结果B;
bObj=验证为空(bObj);
对于(变量i=0;i
您可以使用
JSON.Stringify
(请参阅)和replacer方法来替换
对象中的所有
null

console.log(replaceNull)({
x:{},
y:空,
z:[1,null,3,4],
福:“福”,
条:{foobar:null}
}));
const yourObj={“person”:{“id”:12345,“name”:“John Doe”,“phones”:{“home”:“800-123-4567”,“mobile”:null},“email”:[“jd@example.com", "jd@example.org“],“dateOfBirth”:null,“registered”:true,“emergencyContacts”:[{“姓名”:“Jane Doe”,“电话”:null,“关系”:“配偶”},{“姓名”:“Justin Doe”,“电话”:“877-123-1212”,“关系”:未定义的}]};
log(replaceNull(yourObj,“”);
函数replaceNull(someObj,replaceValue=“***”){
常量替换器=(键,值)=>
字符串(值)==“空”| |字符串(值)==“未定义”?替换值:值;
//^因为您似乎也想将(字符串)替换为“null”或“undefined”
返回JSON.parse(JSON.stringify(someObj,replacer));

}
您可以使用
JSON.Stringify
(请参阅)和replacer方法来替换
对象中的所有
null

console.log(replaceNull)({
x:{},
y:空,
z:[1,null,3,4],
福:“福”,
条:{foobar:null}
}));
const yourObj={“person”:{“id”:12345,“name”:“John Doe”,“phones”:{“home”:“800-123-4567”,“mobile”:null},“email”:[“jd@example.com", "jd@example.org“],“dateOfBirth”:null,“registered”:true,“emergencyContacts”:[{“姓名”:“Jane Doe”,“电话”:null,“关系”:“配偶”},{“姓名”:“Justin Doe”,“电话”:“877-123-1212”关系“:未定义的}]};
log(replaceNull(yourObj,“”);
函数replaceNull(someObj,replaceValue=“***”){
常量替换器=(键,值)=>
字符串(值)==“空”| |字符串(值)==“未定义”?替换值:值;
//^因为您似乎也想将(字符串)替换为“null”或“undefined”
返回JSON.parse(JSON.stringify(someObj,replacer));

}
更新:由于示例对象具有值为“null”的键,这些键是字符串,而不是值为null的对象,因此我更新了我的答案以符合您的需要

尝试递归解决这个问题。每次算法在对象中找到一个对象时,验证例程都会调用这个“新”对象

这是我的小提琴,它展示了一个解决方案:


更新:由于示例对象具有值为“null”的键,这些键是字符串,而不是值为null的对象,因此我更新了我的答案以符合您的需要

尝试递归解决这个问题。每次算法在对象中找到一个对象时,验证例程都会调用这个“新”对象

这是我的小提琴,它展示了一个解决方案:


您能给出一个您试图创建的输入对象和输出的示例吗?通过使用
| |
作为空合并运算符,您似乎可以很容易地简化此操作。此外,递归在这里会有很大帮助,并使逻辑更具可扩展性。{“person”:{“id”:12345,“name”:“John Doe”,“phones”:{“home”:“800-123-4567”,“mobile”:“null”},“email”:[“jd@example.com", "jd@example.org“],“dateOfBirth”:“null”,“registered”:true,“emergencyContacts”:[{“姓名”:“Jane Doe”,“电话”:“null”,“关系”:“配偶”},{“姓名”:“Justin Doe”“,”电话“:”877-123-1212“,”关系“:”空“}]}{”人“:{”id“:12345,“姓名“:”约翰·多伊“,”电话“:{”家“:”800-123-4567“,”手机“:”,”电子邮件“:[”jd@example.com", "jd@example.org“],“出生日期”:“,“已注册”:真,“紧急联系人”:[{“姓名”:“Jane Doe”,“电话”:”,“关系”:“配偶”},{“姓名”:“Justin Doe”,“电话”:“877-123-1212”,“关系”:“}]}空字符串应该替换为空字符串。当我尝试遍历根对象中的每个对象并使用VerifyForNull方法进行验证时,由于javascript没有等待,我遇到了错误。因此希望使用deferred,但我对deferred知之甚少。请给出您尝试创建的输入对象和输出的示例。通过使用
| |
作为空合并运算符,您似乎可以很容易地简化此操作。此外,递归在这方面会有很大帮助,并使逻辑更加可扩展。{“person”:{“id”:12345,“name”:“John Doe”,“phones”:{“home”:“800-123-4567”,“mobile”:“null”},“email”:[“jd@example.com", "jd@example.org“],“dateOfBirth”:“null”,“registered”:true,“emergencyContacts”:[{”name:“Jane Doe”,“phone”:”
function isNull(obj, key) {
    return (obj[key] == null || obj[key] === undefined || obj[key] === "null");
}

function validate(obj) {
    var objKeys = Object.keys(obj);
  objKeys.forEach((key) => {
    if(isNull(obj, key)) {
        obj[key] = "";
    }
    if(typeof(obj[key]) == "object") {
        validate(obj[key]);
    }
  });
}