在 JavaScript 中从数组中查找所有最长的字符串

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/8 22:36:17

在给定的问题陈述中,我们必须借助 Javascript 功能从数组中查找所有最长的字符串。因此,基本上可以通过获取每个字符串的长度,然后将这些长度与最大长度进行比较来完成此任务。

理解问题

当前的问题是从 Javascript 中的数组中查找最长的字符串。因此,我们将有一个字符串数组,我们的主要任务是识别具有最大长度的字符串并将它们显示为新数组。例如:假设我们有一个字符串数组 ['abc', 'defg', 'hijkl', 'mnopqr', 'stuvwxyz'],因此此数组中最长的字符串是 [ 'stuvwxyz' ]。所以我们必须实现函数来完成同样的任务。

给定问题的逻辑

为了解决这个问题,我们将定义一个函数来完成这个任务。首先,在函数内部我们必须找到字符串的长度。因此,我们将迭代字符串数组并跟踪找到的最大长度。对于数组中的每个字符串,我们将比较其长度与当前最大长度,并在必要时进行更新。这样我们就得到了最长字符串的长度。

现在我们将通过再次迭代字符串数组来过滤最长的字符串,这次我们将使用 filter 方法。如果长度与找到的最大长度匹配。那么我们将把它包含在数组中。最后,我们将返回包含所有最长字符串的新数组。

算法

步骤 1:我们必须在给定的数组中找到最长的字符串。因此,为了完成此任务,我们将创建一个名为 findLongestStrings 的函数,该函数将以数组作为输入。在这个数组中,我们将有字符串。我们将从中找到最长的字符串。

步骤 2:现在我们将使用一个变量来存储字符串的最大长度值。并用零值初始化它。

步骤 3:在此步骤中,我们需要找到数组中存在的字符串的长度并找到字符串的 maxLength。因此,我们将遍历数组项。

步骤 4:在循环中,我们将检查字符串的长度是否大于 maxLength,如果此条件为真,则用当前字符串的长度更新 maxLength 值。按照此步骤操作,直到我们找不到 maxLength。

步骤 5:因此,我们将用最长的字符串过滤字符串数组。为了完成这项任务,我们将借助过滤器方法迭代字符串数组。对于每个字符串,我们将检查其长度是否与 maxLength 匹配。如果长度相等,我们将返回新数组,该数组将包含数组中最长的字符串。

示例

// 查找最长字符串的函数
function longestStrings(array) {
  let maxLength = 0;
  for (let i = 0; i < array.length; i++) {
   if (array[i].length > maxLength) {
     maxLength = array[i].length;
   }
  }
  const longestStrs = array.filter((str) => str.length === maxLength);

  return longestStrs;
}
const strings = ["strawberry", "banana", "kiwi", "orange", "pear"];
const longest = longestStrings(strings);
console.log(longest);

输出

[ 'strawberry' ]

复杂度

从数组中查找最长字符串的时间复杂度为 O(n),其中 n 是数组中存在的字符串数。我们执行了两个基本操作。首先是查找最大长度,其次是将字符串的长度与计算出的最大长度进行匹配。此函数的空间复杂度为 O(1) 到 O(n),因为它取决于数组中找到的最长字符串的数量。

结论

我们实现的代码有效地解决了这个问题。此代码有效地查找数组中的最大长度和最长字符串。代码的复杂度是线性的,这使得代码对于任何大小的数组都是有效的。


相关文章


有用资源