【问题标题】:How to extract longest word from an array? JavaScript/JSON如何从数组中提取最长的单词? JavaScript/JSON
【发布时间】:2018-08-18 16:05:54
【问题描述】:

我想创建一个以字符串为参数并提取最长单词的函数。如果有多个相同长度(最大)的单词,则提取第一个。 (顺便说一句,该函数忽略了数字和标点符号)。无论如何,这是代码:

function extractLongest(testString){
  var lenArr = [];
  var finalResult = "";

window.onload = function(){
  testString = testString.replace(/[^a-z " "]/gi, '');
  testString = testString.split(" ");

  for (var counter = 0; counter < testString.length; counter++){
    lenArr[counter] = parseInt(testString[counter].length);
  }
  lenArr = lenArr.sort();
  for (var counterTwo = 0; counterTwo < testString.length; counterTwo++){
    if(parseInt(testString[counterTwo].length) == Math.max(...lenArr)){
      finalResult = testString[counterTwo];
      break;
    }
  }
 }
return finalResult;
}

问题是它总是返回“字符串”(变量的类型,而不是它的值。)

【问题讨论】:

  • 你的最后一段除了 (a) 让你的问题被可能有帮助的人忽略,(b) 激怒任何阅读它的人,(c) 让你投反对票(我没有) .我可以建议你删除它,而是礼貌地声明你已经研究过。此外,您的问题包含minimal reproducible example - 这也可能使您投反对票。一个 mcve 将包含一个示例字符串数组,以及所需输出的明确指示。
  • 您应该考虑编辑问题以消除人们回答您该死问题的需求。这不是要求人们捐出时间来帮助你的好方法。

标签: javascript arrays json string


【解决方案1】:

问题是您在函数中使用了window.onload。这只是在窗口上设置处理程序,它只会在onload 事件触发时运行。您的函数执行此操作,然后立即返回finalReuslts,它仍然是一个空字符串。大概,您希望所有这些代码在您调用该函数时运行。目前尚不清楚您为什么要这样做;删除它使功能起作用:

function extractLongest(testString){
  var lenArr = [];
  var finalResult = "";

  testString = testString.replace(/[^a-z " "]/gi, '');
  testString = testString.split(" ");
  
  for (var counter = 0; counter < testString.length; counter++){
    lenArr[counter] = parseInt(testString[counter].length);
  }
  lenArr = lenArr.sort();
  for (var counterTwo = 0; counterTwo < testString.length; counterTwo++){
    if(parseInt(testString[counterTwo].length) == Math.max(...lenArr)){
      finalResult = testString[counterTwo];
      break;
    }
  }
 
return finalResult;
}

console.log(extractLongest("hello my name is stephen"))

如果有用,可以使用reduce() 更简单的方法:

function extractLongest(testString){
  testString = testString.replace(/[^a-z " "]/gi, '');
  testString = testString.split(" ");
  return testString.reduce(function(a, b) {
    return a.length > b.length ? a : b
});
}
console.log(extractLongest("hello my designation is stephen"))

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 2011-07-09
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-30
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多