我正在尝试解决Codewars上的一个Javascript挑战。
一个“同构词”是指不重复使用字母的单词,无论是连续的还是非连续的。请实现一个函数,用于确定只包含字母的字符串是否为“同构词”。假设空字符串是一个“同构词”,忽略字母大小写。
isIsogram( "Dermatoglyphics" ) == true
isIsogram( "aba" ) == false
isIsogram( "moOse" ) == false // -- ignore letter case
我的翻译如下:
function isIsogram(str) {
var arr = str.split("");
var seen = {};
var out = [];
var length = arr.length;
var j = 0;
for(var i = 0; i < length; i++) {
var item = arr[i].toLowerCase;
if(seen[item] !== 1) {
seen[item] = 1;
out[j++] = item;
}
}
console.log(out.toString.toLowerCase);
console.log(str.toLowerCase);
if (out.toString.toLowercase === str.toLowerCase) {
return true;
}
else {
return false;
}
}
在Codewars中,我的结果是:
console.log(out.toString.toLowerCase); is undefined
并且结果为
console.log(str.toLowerCase); is [Function: toLowerCase].
这意味着我的解决方案始终评估为false。我希望能得到任何指引或者指出我的错误而不是给我具体的解决方案,这样我可以更有效地学习。谢谢!