首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改内部内容、javascript的“map”方法的用法

问修改内部内容、javascript的“map”方法的用法
EN

Stack Overflow用户
提问于 2020-03-31 02:16:52
回答 3查看 48关注 0票数 0

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

嗨,

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

说明如下。

返回提供的字符串,每个单词的第一个字母大写。确保单词的其余部分是小写的。 为了这个练习的目的,你也应该大写连词,如“的”和“的”。

这是我的密码。

​

代码语言:javascript
复制
    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. 返回结果。

然而,一个问题是行:5不影响结果。第一封信不变。我是不是遗漏了什么,对吧?我似乎误解了一些关于地图方法的概念。你能给我一些建议吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2020-03-31 02:26:33

您的代码不能像您认为的那样工作的原因已经记录在MDN字符串文档中。

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

另一种方法是将第一个字符与其余字符串(不包括第一个字符)转换为大写字符。

​

代码语言:javascript
复制
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"));

​

票数 1
EN

Stack Overflow用户

发布于 2020-03-31 02:28:52

看起来字符串上的赋值不像Javascript那样工作,太糟糕了,这在直觉上是正确的。

所以,使用不存在的字符串拼接,所以用str.split('')将字符串拆分成一个字符数组,然后使用数组拼接。

拼接修改输入数组的位置,因此不需要重新分配它。

代码语言:javascript
复制
const str = "hello";
var rayy = str.split(''); // ['h', 'e', 'l', 'l', 'o']
rayy.splice(0, 1, rayy[0].toUpperCase()); // returns ['h], but rayy is now modified in place to ['H', 'e', 'l', 'l', 'o']
const str2 = rayy.join('');  // "Hello"

您对map的使用非常熟练和贴切。

票数 0
EN

Stack Overflow用户

发布于 2020-03-31 16:38:38

非常优雅地使用方法链接- split+map+join

和字符串${var1}${var2}的模式-在左后引号“` "

var1 - item.toUpperCase() -第一个符号toUpperCase

var2 - item.substring(1) -杀死第一个符号

代码语言:javascript
复制
    .toLowerCase() -  other symbols toLowerCase

​

代码语言:javascript
复制
const titleCase = (str) => str.split(' ')
  .map(item => (`${item[0].toUpperCase()}${item.substring(1).toLowerCase()}`))
  .join(' ')

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

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60942420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档