用函数替换方法javascript

时间:2018-02-09 22:48:46

标签: javascript methods replace logic

背后的逻辑我根据MDN的示例制作了以下代码。

function spinalCase(str){
 return  str = str.replace(/[A-Z]/g,function(match, offset, string) {
   return (offset > 0 ? '-' : '') + match.toLowerCase();
});          
}

有人请解释一下以下代码行是如何工作的吗?

return (offset > 0 ? '-' : '') + match.toLowerCase();

我试图基于MDN的replace()方法页面来理解它,但到目前为止我还不了解它背后的逻辑。

我最不理解的是(偏移> 0?' - ':'')+ match.toLowerCase()返回带替换的单词。 replace函数是否循环遍历所有字母?或者它只返回整个就绪字符串和替换...

1 个答案:

答案 0 :(得分:2)

JS String Replace方法可以将一个函数作为它的第二个参数,它将在输入字符串中传递匹配项。每个匹配都被传递到该内部函数,并在输入字符串中被内部函数返回的内容替换。

在这种情况下,模式匹配[A-Z](所有大写字母)。

所以在字符串“ThisIsAString”中我们将匹配“T”,“I”,“A”和“S”

如果此匹配不是第一个字符,则内部函数使用三元组:offset > 0 ? '-' : ''(紧凑if / else)为短划线加前缀。它可以改写为:“如果此匹配不是第一个字符,则使用短划线加前缀。否则,不要为任何前缀添加前缀。”

最后一部分:+ match.toLowerCase()将匹配的字符转换为小写,所以现在我们的匹配将替换为:“t”,“ - i”,“ - a”和“-s”