-
Notifications
You must be signed in to change notification settings - Fork 0
/
countOnly.js
59 lines (50 loc) · 1.3 KB
/
countOnly.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
56
57
58
59
const assertEqual = function (actual, expected) {
let result = actual === expected;
return result;
};
const firstNames = [
"Karl",
"Salima",
"Agouhanna",
"Fang",
"Kavith",
"Jason",
"Salima",
"Fang",
"Joe",
];
const countOnly = function (firstNames, itemsToCount) {
// make variable with empty obj.
// loop thru all item which gives us the items
//if condition acces the name variable that we looping from
//nested if condition check if the name empty obj. if there is add +1. if not print undefined.
let obj = new Map();
let selectedkeys = Object.keys(itemsToCount);
let filteredFirstnames = firstNames.filter((x) => selectedkeys.includes(x));
filteredFirstnames.forEach((firstName) => {
let isSelected = itemsToCount[firstName];
if (isSelected) {
let count = 0;
for (let i = 0; i < filteredFirstnames.length; i++) {
if (filteredFirstnames[i] === firstName) {
count += 1;
}
}
obj.set(firstName, count);
}
});
return Object.fromEntries(obj);
};
/*console.log(
countOnly(firstNames, {
Jason: true,
Karima: true,
Fang: true,
Agouhanna: false,
})
);*/
(assertEqual(["Jason"], 1));
assertEqual(["Karima"], undefined);
assertEqual(["Fang"], 2);
assertEqual(["Agouhanna"], undefined);
module.exports=countOnly