【问题标题】:Counting the length of every element in an array计算数组中每个元素的长度
【发布时间】:2017-11-06 18:56:17
【问题描述】:

我正在尝试查找较长文本中每个单词的长度。每个单词的长度需要在函数末尾的数组中返回。

我认为应该使用两个循环;一个用于将文本拆分为单词,另一个用于计算每个单词的长度。但我无法让它工作......

如果您对我的问题有一些很棒的解决方案,请提供帮助!顺便说一句,我对 JavaScript 很陌生,所以请多多包涵。

【问题讨论】:

  • 试试这个var arr = sentence.split(' ').map(word => word.length);sentence 是存储字符串的变量的名称。

标签: javascript arrays loops


【解决方案1】:

这将返回一个包含单词及其长度的对象数组:

var sentence = 'Lorem ipsum dolor sit amet consectetur adipiscing elit';
var arr = sentence.split(' ').map(function(item){
    return {
        word: item,
        length: item.length
    }
});

希望对你有帮助!

【讨论】:

    【解决方案2】:

    要将句子拆分为单词数组,请使用String.prototype.split(),在这种情况下,' '(一个空格)作为您要分隔的内容。要在一个数组中循环创建一个新数组,请使用Array.prototype.map()。所以你的功能会喜欢:

    '你好!'.split(' ').map((word) => (word.length));


    但是等一下,为什么返回 `[1, 6]?好吧,您的函数目前无法知道“!”不是“那里”这个词的一部分。

    我不是你想要的处理方式。我可以看到返回 [1, 5][1, 5, 1] 的参数,或者将其保留为 [1, 6]

    如果你想要第一个选项,你可以写一个像这样的正则表达式:

    '你好!'.split(/\b\W*/).filter(Boolean).map((word) => (word.length));
    // 'filter(Boolean)' 根据规范删除split() 插入的空字符串

    虽然这会将“超时”一词返回为[4,3]

    或者您可以尝试第二种选择:

    '你好!'.split(/\b\s*/).map((word) => (word.length));

    虽然这将返回“我”为[1,1,1]。在这一点上,您只需要看看哪种正则表达式最适合您(这是一个单独的问题。)因为“单词什么时候开始和结束”有点主观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 2023-03-26
      • 2019-08-21
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多