【问题标题】:count the letters of the words within a string计算字符串中单词的字母
【发布时间】:2019-06-11 15:14:39
【问题描述】:

所以我是 JavaScript 新手 - 似乎无法找到解决这个简单挑战的方法。

如果我要将以下内容解析为str = "apple ban"

它必须在 array = ["apple 5", "ban 3"] 中返回以下内容

基本上 - 计数识别单词,计算每个单词中的字母数量,每当出现空格时拆分字符串并将其推送到数组中,每个单词分开,每个单词的长度在它旁边。

这是我目前为止的工作 - 为什么离题。

function addLength(str){

  var array = [];

  array.push(str.split(/\s+/).length);

  return array;
}

我查看了过去有关 SoF 的问题,并试图得出自己的结论/解决方案。这次似乎不是这样。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这样试试

    var str = "apple ban";
    var strArr = str.split(" ").map(x => {
      return x + " " + x.length;
    });
    console.log(strArr);
    

    DEMO

    【讨论】:

    • 谢谢你,Anik - 效果很好。我需要注意的 map() 函数。
    【解决方案2】:

    var str = "annnu";
    var arr = str.split("");
    var count = 1;
    var map1 = new Map();
    
    for (let i = 0; i < arr.length; i++) {
      if (map1.has(arr[i])) {
        var k = map1.get(arr[i]);
        map1.set(arr[i], ++k);
      } else {
        map1.set(arr[i], 1);
      }
    }
    
    for (var [key, value] of map1) {
      console.log(key + ' = ' + value);
    }

    【讨论】:

      【解决方案3】:

      var name = "boss";
      var obj = {};
      var newArray = [];
      
      for (var i = 0; i < name.length; i++) {
        var count = 0;
        for (var j = 0; j < name.length; j++) {
          if (name.charAt(i) === name.charAt(j)) {
            count++;
          }
        }
        
        var result = name[i] + "-" + count;
        obj = Object.assign(result);
        newArray.push(obj);
      }
      
      console.log(newArray);

      输出:

      [ "b-1", "o-1", "s-2", "s-2" ]
      

      【讨论】:

      • 请添加一些文字来解释您的解决方案。至少以某种方式使作者可以遵循问题。
      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      相关资源
      最近更新 更多