【问题标题】:function: return an array containing every word in the string or empty array if string is empty [duplicate]功能:返回一个包含字符串中每个单词的数组,如果字符串为空,则返回空数组[重复]
【发布时间】:2017-07-20 07:07:53
【问题描述】:

我的任务是编写一个名为“getAllWords”的函数。

给定一个句子,“getAllWords”返回一个包含句子中每个单词的数组。

注意事项: * 如果给定一个空字符串,它应该返回一个空数组。


我想出的是:

function getAllWords(str) {

 var array = [];
  for (var i = 0; i < str.length; i++) {
     array.push(str[i]);
   }
   return array;
   }

   getAllWords('Radagast the Brown');

我得到的是:

  [ 'R','a','d','a','g','a','s','t',' ','t','h','e',' ','B','r','o','w','n']

但我想要的是:

   ['Radagast', 'the', 'Brown']

【问题讨论】:

  • 试试javascript array.split(" ");

标签: javascript arrays string function


【解决方案1】:

您可以为此目的使用split 方法:

function getAllWords(sentence) {
  return typeof sentence === 'string' && sentence.length > 0 ?
         sentence.split(' ') : [];
}

var words = getAllWords('Radagast the Brown');

然后我们在返回拆分版本空数组之前检查输入是否存在,实际上是一个字符串并且有任何内容。

假设你总是得到一个字符串作为输入,你可以进一步简化它:

function getAllWords(sentence) {
  return sentence.length > 0 ? sentence.split(' ') : [];
}

var words = getAllWords('Radagast the Brown');

【讨论】:

  • sentence &amp;&amp; typeof sentence === 'string' &amp;&amp; sentence.length &gt; 0 太过分了。
  • 您对sentence &amp;&amp; typeof sentence === 'string' 部分是完全正确的,因为它完全是多余的。我仍然会确保输入是一个有效的字符串并且有内容,除非我们可以假设输入总是一个字符串。更新了答案以反映变化。
  • @GorkaHernandez 谢谢 Gorka!您的答案有效,因为它说明了字符串是否为空。 :-)
【解决方案2】:

如您所见,遍历字符串会得到每个字符。

要获取每个单词,您应该使用String.split(' ')

function getAllWords(str) {
  return str.split(' ');
}

console.log(getAllWords('Radagast the Brown'));

【讨论】:

  • @Downvoter,至少是连续投票的原因?
  • 我收到一条错误消息:当给定一个空字符串时应该返回一个空数组
【解决方案3】:

var sentence = 'Radagast the Brown';
var words = sentence.split(' ').filter(c => c != '');

document.write(JSON.stringify(words));

这是您需要的代码。

【讨论】:

    【解决方案4】:

    使用javascripts字符串split()函数。

    例如:

    var str = "Radagast the Brown";
    var arr = str.split(' ');
    console.log(arr);
    

    【讨论】:

      【解决方案5】:

      function getAllWords(str) {
      
       var arr = str.split(" ")
       return arr;
      }
      
        console.log(getAllWords('Radagast the Brown'));

      【讨论】:

      • 我收到错误消息:当给定一个空字符串时应该返回一个空数组
      【解决方案6】:

      您只需要使用 .split() 函数。这将自动将结果转换为数组:

      function getAllWords(str) {
          if(str === "") {
              var array = {};
          } else {
              var array = str.split(" ");
          }
          return array;
      }
      

      编辑:该函数还检查字符串是否为空,如果字符串为空,则返回一个空数组。

      【讨论】:

      • 为什么有人无缘无故否决了页面上的所有答案??
      • 我收到一条错误消息:当给定一个空字符串时应该返回一个空数组
      • @MelvinMullings,我已经调整了函数来检查字符串是否为空并采取相应的行动。
      • 谢谢! @JeffGugelmann
      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      • 1970-01-01
      • 2019-03-14
      • 2020-09-05
      相关资源
      最近更新 更多