javascript - 在我的字谜问题中,我不明白为什么计数器是 16
问题描述
我的问题是关于字谜,这个函数需要测试 var test 是否与 original 相同,但在我的情况下,计数器是 16,但我不明白为什么。我调试了但不清楚。感谢您的帮助!
var isAnagram = function(test, original) { //anagram function test
let counter=0;
let test1 = test.toLowerCase().split("");
let original1=original.toLowerCase().split("");
const test2= new Set(test1);
const original2= new Set(original1);
for(let i of test2)
{
for(let j of original2)
{
if (test2[i] == original2[j])
{
counter++;
}
}
}
console.log(counter);
if (counter == test2.length)
{
return true;
}
return false;
};
console.log(isAnagram("foefet", "toffee")); //case
解决方案
- for(let i of Set) 已经返回值,而不是索引。
- 您的算法使用这些值作为索引。这总是返回未定义
- 所有的比较都是真的(因为 undefined === undefined)
- 您提供的一组输入字符串有 4 个成员 (f,o,e,t)。
- 您遍历外部集,然后遍历内部集。即 16 次比较,16 * true => 计数器增加 16 倍。
但是,即使您解决了这个问题,该算法也不起作用 - 结果将是 4,因为每个字母都被计算一次(该集合只包含一个)。
您需要重新考虑您的算法(我不会剧透,因为这会破坏您的锻炼)。作为提示,我不认为集合在这里是一个好工具。
推荐阅读
- javascript - 如何使用量角器在表格中定位单元格
- php - JQuery 价格选择器滑块无法正常工作(已解决)
- vba - VBA 运行时:msvbvm60.dll 与 VBE7.DLL
- wso2 - WSO2 自定义调解器中的类强制转换异常
- javascript - 在 for 循环中使用 JQuery 选择器
- django - 如何解决 AWS Elastic Beanstalk Django 运行状况检查问题
- django - 如何在视图文件中显示外键数据?
- javascript - 选项对象 JS
- vue.js - Vue在删除项目时保持2个组件数据同步
- python - 运行 tox 时出现 ImportMismatchError