将句子字符串拆分为单词数组,然后将单词数组拆分为单词数组中的字符数组

Splitting sentence string into array of words, then array of words into arrays of characters within the array of words

本文关键字:数组 单词 拆分 字符 句子 字符串 然后      更新时间:2023-09-26

我正在解决 freecodecamp.com 的问题,我想看看到目前为止我的代码是否在做我认为它正在做的事情......

function titleCase(str) {
  var wordArr = str.split(' '); // now the sentences is an array of words
  for (var i = 0; i < wordArr.length; i++) { //looping through the words now...
    charArr = wordArr[i].split(''); //charArr is a 2D array of characters within words?
    return charArr[1][1];
  }
}
titleCase("a little tea pot"); // this should give me 'i', right?

同样,这只是代码的开始。我的目标是在 titleCase(); 的参数中大写每个单词的第一个字母。也许我什至没有做对这件事。

但。。。在第 4 行charArr是一个多维数组。这是否创造了[['a'],['l','i','t','t','l','e'],['t','e','a','p','o','t']]

除了 ABR 答案(我还不能评论):

charArr 是一个一维数组,如果你想让它成为一个 2D 数组,你需要推送 wordArr[i].split('') 的结果;而不是分配它。

charArr.push(wordArr[i].split(''));

并且不要忘记将 charArr 初始化为空数组

几个问题:
1. 您的 return 语句将在一次迭代后停止此操作。
2. 如果其中一个单词少于 2 个字母(例如示例中的第一个字母,即"a") - 您将在 charArr[1][1] 处获得异常。

除此之外,它基本上还可以。它可能会帮助您下载像Firebug这样的工具并实时测试您的代码...

您可以执行以下操作:

function titleCase(str) {
    var newString = "";
    var wordArr = str.split(' ');
    for (var i = 0; i < wordArr.length; i++) { //looping through the words now...
        var firstLetter = wordArr[i].slice(0,1); // get the first letter
        //capitalize the first letter and attach the rest of the word
        newString += firstLetter.toUpperCase() + wordArr[i].substring(1) + " ";
    } 
 return newString;
} 

您还需要删除for loop中的return statement,因为 for 循环第一次遍历 return 语句时,它将结束函数,您将无法遍历所有单词


在这里您可以了解有关string.slice()的更多信息:http://www.w3schools.com/jsref/jsref_slice_string.asp