The following code for solving anagrams works with ES6 (commented) way of iterating through object and comparing aCharMap
with bCharMap
but doesn’t with ES5 code example.
Why is the code behaving differently when using ES5 version or am I missing something?
function anagrams(stringA, stringB) {
const aCharMap = buildCharMap(stringA);
const bCharMap = buildCharMap(stringB);
if (Object.keys(aCharMap).length !== Object.keys(bCharMap).length) {
return false;
}
// for (let char in aCharMap) {
// if (aCharMap[char] !== bCharMap[char]) {
// return false;
// }
// }
Object.keys(aCharMap).forEach(function(char) {
if (aCharMap[char] !== bCharMap[char]) {
return false;
}
});
return true;
}
function buildCharMap(str) {
const charMap = {};
for (let char of str.replace(/[^\w]/g, '').toLowerCase()) {
charMap[char] = charMap[char] + 1 || 1;
}
return charMap;
}
console.log(anagrams('one one', 'two two two'));