Javascript i和0在这里做什么?有人能解释一下吗?
我正在接受来自代码战的挑战,我正在寻找一个解决方案,但我不理解它。有人能解释一下Javascript i和0在这里做什么?有人能解释一下吗?,javascript,Javascript,我正在接受来自代码战的挑战,我正在寻找一个解决方案,但我不理解它。有人能解释一下s和o在做什么吗 函数重复编码(word){ word=word.toLowerCase(); 变量c='',s='',o=''; for(i=0;i-1)“):”(”; } 返回c; } 来自: beginIndex 从零开始提取的索引。如果 否定,它被视为strLength+(beginIndex),其中strLength为 字符串的长度(例如,如果beginIndex为-3,则为 视为strLength-3)。
s
和o
在做什么吗
函数重复编码(word){
word=word.toLowerCase();
变量c='',s='',o='';
for(i=0;i-1)“):”(”;
}
返回c;
}
来自:
beginIndex
从零开始提取的索引。如果
否定,它被视为strLength+(beginIndex),其中strLength为
字符串的长度(例如,如果beginIndex为-3,则为
视为strLength-3)。如果beginIndex大于或等于
字符串的长度slice()返回一个空字符串
endIndex
可选。从零开始的索引,在此索引之前结束提取
不包括此索引处的字符。如果省略endIndex,
slice()提取到字符串的末尾。如果为负数,则将对其进行处理
作为strLength+endIndex,其中strLength是字符串的长度
(例如,如果endIndex为-3,则将其视为strLength-3)
s
将包含当前迭代中字符之后的word
中的所有字符
o
将包含word
中除当前迭代中的字符外的所有字符(s
+[从开始到当前迭代中的所有字符])
这意味着(o.indexOf(word[i])>-1)
表达式只有在当前迭代中的字符具有重复项时才为true
s = word.slice(i + 1);
o = s + word.slice(0, i);
这两行获取当前字符后面的内容和前面的内容,并将这两部分连接起来。换句话说,它们构建一个字符串,该字符串等于省略当前字符的源字符串。例如,如果word
是abcde
和i=2
,则o
将是cour的de+ab=deab
是的,他们可以简单地写
o = word.slice(0, i) + word.slice(i + 1)
同样的效果
作为旁注,该算法似乎效率很低,因为它构建word.length
临时字符串只是为了检查唯一性。更惯用的方法是沿着
function duplicateEncode(word) {
let w = [...word.toLowerCase()];
return w
.map(c => w.indexOf(c) === w.lastIndexOf(c) ? '(' : ')')
.join('')
}
i
是您在varword
中的位置,0告诉slice
从单词的开头开始,直到i