javascript - 用函数替换方法javascript

标签 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() 方法页面来理解它,但到目前为止我不理解它背后的逻辑。

我最不明白的是 (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/

相关文章:

Javascript - 检查方法原型(prototype)是否已更改?

java - Java 泛型方法的返回类型

actionscript - 使用 ...(rest) 参数将参数从数组传递到 Actionscript 方法

javascript - 从 JavaScript 中的字符串中删除 ASCII « OR »

string - 替换字符串

javascript - 为什么点击后是touchstart事件?

javascript - 如何在javascript中进行多维数组理解?

javascript - 字符串文字连接。这个语法在 JS 中是什么意思?

class - 使用 Sed 和字符类从大写到小写

php - 以编程方式将 .shp 文件转换为 Excel 电子表格