javascript - underscore - lodash是什麼




Lodash標題案例(每個單詞的大寫第一個字母) (8)

我正在查看lodash文檔和其他Stack Overflow問題 - 雖然有 幾種本機JavaScript方法可以完成此任務 ,但有沒有一種方法可以使用 純粹的 lodash函數(或至少現有的原型函數)將字符串轉換為標題案例這樣我就不必使用正則表達式或定義新函數了?

例如

This string ShouLD be ALL in title CASe

應該成為

This String Should Be All In Title Case

下面的代碼將完美地工作:

var str =“TITLECASE”; _.startCase(str.toLowerCase());


不像@ 4castle的回答那麼簡潔,但是描述性和充實性,儘管如此......

var basicTitleCase = _
    .chain('This string ShouLD be ALL in title CASe')
    .toLower()
    .words()
    .map(_.capitalize)
    .join(' ')
    .value()

console.log('Result:', basicTitleCase)
console.log('Exact Match:' , basicTitleCase === 'This String Should Be All In Title Case')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script>


與lodash版本4。

_.upperFirst(_.toLower(str))


這個問題有不同的答案。 有些人建議使用 _.upperFirst 而有些人推薦使用 _.startCase

知道它們之間的區別。

i) _.upperFirst 將轉換字符串的第一個字母,然後字符串可能是單個單詞或多個單詞,但字符串的唯一第一個字母將轉換為大寫。

_.upperFirst('jon doe')

輸出:

Jon doe

查看文檔 https://lodash.com/docs/4.17.10#upperFirst

ii) _.startCase 將轉換字符串中每個單詞的第一個字母。

_.startCase('jon doe')

輸出:

Jon Doe

https://lodash.com/docs/4.17.10#startCase


這是使用ONLY lodash方法而沒有內置方法的方法:

_.reduce(_.map(_.split("Hello everyOne IN the WOrld", " "), _.capitalize), (a, b) => a + " " + b)

這是我用例的另一個解決方案:“魔鬼的骨幹”

只是:

function titleCase (str) {
  return _.map(str.split(' '), _.upperFirst).join(' ');
}

使用startCase會刪除撇號,所以我不得不解決這個限制。 其他解決方案似乎相當複雜。 我喜歡這個,因為它乾淨,易於理解。


 var s = 'This string ShouLD be ALL in title CASe';
 _.map(s.split(' '), (w) => _.capitalize(w.toLowerCase())).join(' ')

除非我錯過了它,否則lodash沒有自己的大/小寫方法。


_.startCase(_.camelCase(str))

對於非用戶生成的文本,這會處理比接受的答案更多的情況

> startCase(camelCase('myString'))
'My String'
> startCase(camelCase('my_string'))
'My String'
> startCase(camelCase('MY_STRING'))
'My String'
> startCase(camelCase('my string'))
'My String'
> startCase(camelCase('My string'))
'My String'




lodash