-
Notifications
You must be signed in to change notification settings - Fork 0
/
task_1.js
55 lines (44 loc) · 1.16 KB
/
task_1.js
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const OBJECT = {
name: "Kurt",
lastname: {},
bio: {
place: "Tampa",
state: "",
date: "23.01.1987",
post: {
a: "aaa",
b: ""
}
},
else: []
};
const skipKey = "lastname";
console.log(countEmptyKeys(OBJECT, skipKey))
function countEmptyKeys(object, skip) {
let count = 0;
search(object, skip);
function search(obj, skip) {
for (let key in obj) {
if (skip && skip === key) {
continue;
} else {
if (obj.hasOwnProperty(key)){
if ( checkDeep(obj[key]) ) {
search(obj[key], skip)
} else if ( checkVoid(obj[key]) ) {
count ++;
}
}
}
}
return count;
}
function checkDeep(value) {
return typeof value === 'object' && Object.keys(value).length !== 0;
}
function checkVoid(value) {
return typeof value === 'object' && Object.keys(value).length === 0 ||
typeof value === 'string' && Object.keys(value).length === 0
}
return count;
}