[英]DiscordJS: guildMemberAdd console.log not returning anything
[英]Function not returning anything at all but console.log returns something
我正在嘗試在 js 中運行這個 function,這個 function 應該檢查字符串是否有任何重復的字母,如果有則返回 false,如果沒有則返回 true,但它不返回任何內容。 我正在嘗試比較兩個字符串並基於此返回 true 或 false。
function isIsogram(str) { let str1 = str.toLowerCase().split(""); //console.log(str.toLowerCase()) let str2 = [] for (let i = 0; i < str1.length; i++) { //console.log(str1[i]) if (str2.indexOf(str1[i]) === -1) { str2.push(str1[i]) } } //console.log(str2) if (str2 === str1) { return true; } else return false; } console.log(isIsogram("abba"))
您可以嘗試使用以下內容:
function hasRepeatedChar(text){
return text.split("").some(
function(v,i,a){
return a.lastIndexOf(v)!=i
}
);
}
這個答案很好地解釋了它: 檢查字符串中的重復字符 Javascript
我認為你可以像這樣優化你的算法:
function isIsogram(str) { let foundChars = []; for (let i = 0; i < str.length; i++) { const char = str[i]; if (foundChars.includes(char)) { return false; } foundChars.push(char); } return true; } console.log(isIsogram("ab")); console.log(isIsogram("abba"));
不能簡單地比較兩個 arrays。 但是您可以先將它們加入字符串,然后進行比較。
function isIsogram(str) { let str1 = str.toLowerCase().split(""); let str2 = [] for (let i = 0; i < str1.length; i++) { if (str2.indexOf(str1[i]) === -1) { str2.push(str1[i]) } } if (str2.join('') === str1.join('')) { return true; } else return false; } console.log(isIsogram("abba"))
此外,我為您提供了一個更簡單的解決方案,即利用Set
。
function isIsogram(str) { return new Set(str.split('')).size === str.length } console.log(isIsogram("abba"), isIsogram("abc"))
我認為這有效:
function isIsogram(str) { let str1 = str.toLowerCase().split(""); let str2 = []; for (let i = 0; i < str1.length; i++) { if (str2.indexOf(str1[i]) === -1) { str2.push(str1[i]); } else{ return false; } } return true; } console.log(isIsogram("abba"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.