-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCompactObject.js
More file actions
26 lines (25 loc) · 799 Bytes
/
CompactObject.js
File metadata and controls
26 lines (25 loc) · 799 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var compactObject = function(obj) {
if (obj === null || obj === false || obj === 0 || obj === "") {
return 0;
}
if (Array.isArray(obj)) {
obj = obj.filter(function(value) {
return value !== null && value !== false && value !== 0 && value !== "";
}).map(compactObject);
return obj;
}
if (typeof obj === "object" && obj !== null) {
var result = {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
var compactedValue = compactObject(obj[key]);
if (compactedValue !== 0) {
result[key] = compactedValue;
}
}
}
return result;
}
return obj;
};
console.log(compactObject({"a": null, "b": [false, 1]}));