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
是您在var
word
中的位置,0告诉
slice
从单词的开头开始,直到
i