javascript - camelCase 到 kebab-case

标签 javascript ecmascript-6

我有一个 kebabize 函数,可以将 camelCase 转换为 kebab-case。我正在分享我的代码。可以更优化吗?我知道这个问题可以使用正则表达式来解决。但是,我想在不使用正则表达式的情况下做到这一点。

const kebabize = str => {

    let subs = []
    let char = ''
    let j = 0

    for( let i = 0; i < str.length; i++ ) {

        char = str[i]

        if(str[i] === char.toUpperCase()) {
            subs.push(str.slice(j, i))
            j = i
        }

        if(i == str.length - 1) {
            subs.push(str.slice(j, str.length))
        }
    }

    return subs.map(el => (el.charAt(0).toLowerCase() + el.substr(1, el.length))).join('-')
}

kebabize('myNameIsStack')

最佳答案

const kebabize = str => {
   return str.split('').map((letter, idx) => {
     return letter.toUpperCase() === letter
      ? `${idx !== 0 ? '-' : ''}${letter.toLowerCase()}`
      : letter;
   }).join('');
}

console.log(kebabize('myNameIsStack'));
console.log(kebabize('MyNameIsStack'));

您可以检查每个字母是否为大写并替换它。

关于javascript - camelCase 到 kebab-case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63116039/

相关文章:

javascript - 为什么字符串数组中的第一个字母不转换为大写?

javascript - 如何在不调用 "transition()"的情况下对 D3 生成的 HTML 表进行排序?

javascript - 一旦附加到浏览器中的根对象,引用时是否必须使用根前缀?

javascript - 为什么 ES6 类中的 "this"不是隐式的?

javascript - 我想从当前时间减去 8 小时。如果我尝试从小时数中减去 8,结果会为负数

javascript - 以编程方式在 BorderContainer 中创建的 AccordionContainer 存在大小问题

javascript - “箭头功能”和“功能”是否等效/可互换?

javascript - 如何将 2 个包含 n 个元素的数组合并为 1 个包含 n 个对象的数组?

javascript - 可以在javascript中使用JSON编辑JSON吗

javascript - 检查函数是否是类的方法?