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

时间:2016-02-10 16:15:15

标签: javascript arrays multidimensional-array

我正在解决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']]

3 个答案:

答案 0 :(得分:1)

几个问题:
1.您的退货声明将在一次迭代后停止 2.如果其中一个单词少于2个字母(如示例中的第一个单词,即'a') - 您将在charArr [1] [1]处获得异常。

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

您可以执行以下操作:

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;
} 

此外,您需要删除return statement中的for loop,因为for循环第一次超过return语句时,它将结束该功能,您将无法循环遍历所有单词

您可以在此处详细了解string.slice()http://www.w3schools.com/jsref/jsref_slice_string.asp