背后的逻辑我有以下代码是根据 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() 方法页面来理解它,但到目前为止我不理解它背后的逻辑。
我最不明白的是 (offset > 0 ? '-' : '') + match.toLowerCase() 如何返回带替换的单词。替换函数是否循环遍历所有字母?或者它只是返回整个准备好的字符串和替换......
最佳答案
JS String Replace 方法可以将一个函数作为它的第二个参数,它将在输入字符串中获取传递的匹配项。每个匹配项都会传递到该内部函数,并在输入字符串中替换为该内部函数返回的任何内容。
在这种情况下,模式匹配 [A-Z](所有大写字母)。
因此在字符串“ThisIsAString”中我们将匹配“T”、“I”、“A”和“S”
内部函数使用三元:offset > 0 ? '-' : ''
(compact if/else) 如果此匹配项不是第一个字符,则在破折号前加一个破折号。它可以改写为:“如果此匹配项不是第一个字符,则以破折号作为前缀。否则,不要添加任何前缀。”
最后一部分:+ match.toLowerCase()
将匹配的字符转换为小写,所以现在我们的匹配将被替换为:“t”、“-i”、“-a”和“-s”
关于javascript - 用函数替换方法javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715245/