首页 > 解决方案 > 使用'map'方法修改内部内容,javascript

问题描述

https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-algorithm-scripting/title-case-a-sentence

你好,

我正在练习 Freecodecamp.com 的基本算法。

说明如下。

返回提供的字符串,每个单词的首字母大写。确保单词的其余部分是小写的。

出于本练习的目的,您还应该将“the”和“of”等连接词大写。

这是我的代码。

    const titleCase = str => {
      let result = str.split(' ');
      result = result.map(t => {
        t = t.toLowerCase();
        t[0] = t[0].toUpperCase();
        return t;
      });
      return result.join(' ');
    };
    
    console.log(titleCase("I'm a little tea pot"));

结果 i'm a little tea pot

这就是我的想法。

  1. 按空格将整个字符串提取成片段。
  2. 使其小写。
  3. 仅将第一个字母大写。
  4. 返回结果。

但是,问题是 line:5 不会影响结果。第一个字母不变。我错过了什么,对吧?似乎我误解了有关地图方法的一些概念。你能给一些建议来解决这个问题吗?

提前致谢。

标签: javascriptalgorithm

解决方案


MDN 字符串文档中记录了您的代码无法正常工作的原因。

当使用括号表示法进行字符访问时,尝试删除这些属性或为这些属性赋值将不会成功。所涉及的属性既不可写也不可配置。

另一种方法是将转换为大写后的第一个字符与剩余的字符串(不包括第一个字符)连接起来。

const titleCase = str => {
  return str.toLowerCase()
    .split(' ')
    .map(w => `${w[0].toUpperCase()}${w.substring(1)}`)
    .join(' ');
};

console.log(titleCase("I'm a little tea pot"));


推荐阅读