功能 - 以大写形式返回每隔两个单词

Jac*_*sl1 0 javascript

我想将函数中的所有其他单词更改为大写字母。如果只有 1 个单词 - 则也要大写。

例子:

asd asd asd asd -> asd ASD asd ASD
asd -> ASD
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的:

function capitalize(str) {
  let word = str.toUpperCase();
  for (let i = 0; i < str.length; i++) return word;
}

console.log(capitalize("asd asd asd asd"));
Run Code Online (Sandbox Code Playgroud)

Use*_*863 5

使用map()

function capitalize(str) {
  return str
    .split(' ')
    .map((s, i, arr) => (arr.length == 1 || i % 2) ? s.toUpperCase() : s)
    .join(' ')
}

console.log(capitalize("asd asd asd asd"));
console.log(capitalize("asd"));
Run Code Online (Sandbox Code Playgroud)

使用正则表达式和replace()

https://regex101.com/r/wdR9zt/1

function capitalize(str) {
  return str.replace(/(\S+\s+)?(\S+\s*)/g, (m, p1 = '', p2) => p1 + p2.toUpperCase())
}

console.log(capitalize("asd asd asd asd"));
console.log(capitalize("asd"));
Run Code Online (Sandbox Code Playgroud)