javascript - 对象迭代和比较行为不正确
问题描述
以下用于解决字谜的代码适用于 ES6(已注释)迭代对象并与 ES5 代码示例进行比较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'));
解决方案
推荐阅读
- c - RSA OAEP 实现编译问题
- acumatica - 在 acumatica 中,如何在“收入”选项卡中显示“成本”选项卡中的更改?
- reactjs - 如何显示“未找到任何项目”React.js
- fbx - Assimp FBX 加载器和 PBR 纹理
- vulkan - 使用 Vulkan 渲染小文本?
- python-3.x - 如何在类中设置一次变量
- python - django-import-export:导入多对多字段
- python - 从迷你数据框中获取数据创建数据框的最简单方法是什么?
- angular - mat-divider 没有出现在 mat-toolbar-row 之间
- pytorch - 关于pytorch占用GPU内存