以下用于解决anagrams的代码与ES6(注释)一起使用迭代对象并将aCharMap
与bCharMap
进行比较,但不与ES5代码示例进行比较。
为什么使用ES5版本时代码的行为会有所不同,或者我错过了什么?
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'));