1
var findAnagrams = function (s, p) {2
function compareMaps(map1, map2) {4
if (map1.size !== map2.size) {7
for (var [key, val] of map1) {8
testVal = map2.get(key);9
// in cases of an undefined value, make sure the key10
// actually exists on the object so there are no false positives11
if (testVal !== val || (testVal === undefined && !map2.has(key))) {18
let p_map = new Map();19
let s_map = new Map();24
p_map.set(p[i], p_map.get(p[i]) ? p_map.get(p[i]) + 1 : 1);25
s_map.set(s[i], s_map.get(s[i]) ? s_map.get(s[i]) + 1 : 1);28
if (compareMaps(s_map, p_map)) res.push(l);29
for (let r = pn; r < sn; r++) {30
s_map.set(s[r], s_map.get(s[r]) ? s_map.get(s[r]) + 1 : 1);31
s_map.set(s[l], s_map.get(s[l]) - 1);32
if (s_map.get(s[l]) === 0) {35
if (compareMaps(s_map, p_map)) res.push(l + 1);