【发布时间】:2014-09-29 17:43:45
【问题描述】:
我正在尝试创建一个函数,通过删除 jQuery 对象和空对象、字符串来清除 JSON 对象。
代码:
JSON.clean = function (object) {
/// <summary>Removes jQuery and null values from json object.</summary>
var filter = function (obj, doArrays) {
$.each(obj, function (key, value) {
if (value === "" || value === null) {
delete obj[key];
} else if (Object.prototype.toString.call(value) === '[object Object]') {
filter(value);
} else if (doArrays || Array.isArray(value)) {
obj[key] = filterArray(value);
}
});
return obj;
};
var filterArray = function (obj) {
var result = [];
for (var i = 0; i < obj.length; i++) {
result.push(filter(obj[i], false));
}
return result;
};
var result;
if ($.isArray(object)) {
result = [];
for (var i = 0; i < object.length; i++) {
result.push(filter(object[i]));
}
} else {
result = filter(object);
}
return result;
};
问题:
尝试清理 JSON 对象中的数组时,代码会崩溃。
我知道像这样更改数组是错误的,但这纯粹是针对数组中的 JSON 对象。
我对这个问题的建议是等到阵列的清理完成。
我不知道如何在 Javascript 中实现这一点,所以我希望你们中的任何人都可以提供帮助!
我已将此来源用于主要思想:
How do I remove all null and empty string values from a json object?
【问题讨论】:
-
“代码崩溃”是什么意思?浏览器会崩溃吗?代码是否突然以错误结束?
-
...看起来您正在处理 JavaScript 对象,而不是 JSON,因为您无法在 JSON 中表示除 Array 对象之外的特定对象类型。
-
当我使用 jQuery 2.1.0 运行此代码时,我得到错误 a is undefined in the javascript library,当尝试调用递归函数来清理数组时会发生这种情况。
标签: javascript jquery arrays json filter