我正在尝试创建一个接受字符串的函数,并将每个字母值更改为“(”,如果字符在字符串中不重复,则将其更改为“)”,如果字符确实在字符串中存在重复。我决定走非常规的路线来解决此问题,但是我遇到了一个带有双重for循环的问题。据我了解,javascript的内部for循环无法访问循环外部的变量。我想循环遍历数组中的每个项目两次,但是我不确定将内部循环长度设置为什么。
这是我的代码:
function sortAndChange(word) {
const splitter = word.toLowerCase().split("");
//let jSplitter = word.toLowerCase().split("").length;
let endResult = "";
let truthArray = [];
for(i = 0; i < splitter.length; i++){
for(j = 0; j < splitter.length; j++){
console.log(j);
if(splitter[i] == splitter[j]){
truthArray.push(true);
} else {
truthArray.push(false);
}
}
console.log(truthArray);
truthArray.every(item => item === false) ? endResult += "(" : endResult += ")";
truthArray = [];
}
console.log(endResult);
}
预期结果:
sortAndChange("Success") //expected output: ")())())"
sortAndChange("easy") //expected output: "(((("
您可以按照以下步骤进行操作:
split
并将map()
其转换为数组。indexOf()
和lastIndexOf()
检查是否重复。)
或(
。然后最后join
是数组function sortAndChange(str){
let arr = str.toLowerCase().split('')
return arr.map(x => {
//if its not duplicated
if(arr.indexOf(x) === arr.lastIndexOf(x)){
return '('
}
//If its duplicated
else{
return ')'
}
}).join('');
}
console.log(sortAndChange("Success")) //expected output: ")())())"
console.log(sortAndChange("easy")) //expected output: "(((("
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句