gpt4 book ai didi

将字符串转换为数组然后再返回时的 Javascript 问题

转载 作者:行者123 更新时间:2023-11-29 10:11:53 25 4
gpt4 key购买 nike

我正在尝试解决 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].

这意味着我的解决方案的计算结果始终为假。

如果能给我指明正确方向或指出我的错误,而不是给我解决方案,我将不胜感激,这样我才能更有效地学习。谢谢!

最佳答案

这可能是一个更简单的答案。

function isIsogram(str){

// Turn all letters of the string to lower case and split it into an array.

var letters = str.toLowerCase().split('');
var checkLetters = [];

/* Check to see if the letter appears in the checkLetters array.
If the letter is not already in the array it will push the letter into it. */

letters.forEach(function(letter) {
if(checkLetters.indexOf(letter) === -1) {
checkLetters.push(letter);
}
});

/* Now we have two arrays. If the letters array has non-duplicate letters then
it will be the same length as the checkLetters array. If not, the checkLetters array
will be shorter. */

/* Return true or false depending on whether the lengths of both arrays are equal */

return letters.length === checkLetters.length ? true : false;

}

关于将字符串转换为数组然后再返回时的 Javascript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com