使用 jQuery 和 JavaScript 检查对象中的所有属性是否为 null 并将其替换为空字符串
Check for null & replace it with empty string for all properties in a object using jQuery and JavaScript
我有一个 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] = "";
}
});
}
您可以使用 JSON.Stringify
(参见 MDN)和替换方法来替换 Object
:
中的所有 null
console.log(replaceNull({
x: {},
y: null,
z: [1,null,3,4],
foo: "foo",
bar: {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": [ { "name": "Jane Doe", "phone": null, "relationship": "spouse" }, { "name": "Justin Doe", "phone": "877-123-1212", "relationship": undefined } ] } };
console.log(replaceNull(yourObj, ""));
function replaceNull(someObj, replaceValue = "***") {
const replacer = (key, value) =>
String(value) === "null" || String(value) === "undefined" ? replaceValue : value;
//^ because you seem to want to replace (strings) "null" or "undefined" too
return JSON.parse( JSON.stringify(someObj, replacer));
}
更新:由于您的示例对象具有值为 "null" 的键,它们是字符串而不是值为 null 的对象,因此我更新了我的答案以满足您的需求。
尝试递归解决问题。每次算法在对象中找到一个对象时,都会对该 'new' 对象调用验证例程。
这是我的 fiddle 说明了一个解决方案:https://jsfiddle.net/vupry9qh/13/
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]);
}
});
}
我有一个 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] = "";
}
});
}
您可以使用 JSON.Stringify
(参见 MDN)和替换方法来替换 Object
:
null
console.log(replaceNull({
x: {},
y: null,
z: [1,null,3,4],
foo: "foo",
bar: {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": [ { "name": "Jane Doe", "phone": null, "relationship": "spouse" }, { "name": "Justin Doe", "phone": "877-123-1212", "relationship": undefined } ] } };
console.log(replaceNull(yourObj, ""));
function replaceNull(someObj, replaceValue = "***") {
const replacer = (key, value) =>
String(value) === "null" || String(value) === "undefined" ? replaceValue : value;
//^ because you seem to want to replace (strings) "null" or "undefined" too
return JSON.parse( JSON.stringify(someObj, replacer));
}
更新:由于您的示例对象具有值为 "null" 的键,它们是字符串而不是值为 null 的对象,因此我更新了我的答案以满足您的需求。
尝试递归解决问题。每次算法在对象中找到一个对象时,都会对该 'new' 对象调用验证例程。
这是我的 fiddle 说明了一个解决方案:https://jsfiddle.net/vupry9qh/13/
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]);
}
});
}