背后的逻辑我根据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函数是否循环遍历所有字母?或者它只返回整个就绪字符串和替换...
答案 0 :(得分:2)
JS String Replace方法可以将一个函数作为它的第二个参数,它将在输入字符串中传递匹配项。每个匹配都被传递到该内部函数,并在输入字符串中被内部函数返回的内容替换。
在这种情况下,模式匹配[A-Z](所有大写字母)。
所以在字符串“ThisIsAString”中我们将匹配“T”,“I”,“A”和“S”
如果此匹配不是第一个字符,则内部函数使用三元组:offset > 0 ? '-' : ''
(紧凑if / else)为短划线加前缀。它可以改写为:“如果此匹配不是第一个字符,则使用短划线加前缀。否则,不要为任何前缀添加前缀。”
最后一部分:+ match.toLowerCase()
将匹配的字符转换为小写,所以现在我们的匹配将替换为:“t”,“ - i”,“ - a”和“-s”