如何重写Lodash snakeCase功能

问题描述

我正在使用lodash将文本转换为snakeCase,并且陷入了一种特殊情况,即我应该保持字母数字值不变。

当我将字符串传递为“ This is AAA456B”时。 lodash revealjs-url会将其转换为“ this_is_aaa_456_b”

预期结果类似于“ this_is_aaa456b”。

有没有一种方法可以覆盖破折号snakeCase(str)以忽略字母数字值?

解决方法

您应该创建自己的函数,而不是覆盖现有的

const str = "This is AAA456B"

_.mixin({
  customSnakeCase: s => _
    .chain(s)
    .split(/(\d+)/)
    .map(_.snakeCase)
    .join('')
    .value()
})



console.log(_.customSnakeCase(str))
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>