如何在 JavaScript 中查找数组中元素之间的距离?


在这个问题陈述中,我们的目标是借助 Javascript 找到数组中元素之间的距离。因此,为了完成此任务,我们将使用循环和一个变量来存储 JSON 对象中每个对象的 id。

理解问题陈述

问题陈述是在 Javascript 中编写一个函数,通过该函数我们可以找到数组中元素之间的距离。如果我们有一个数组,则距离将通过从我们要测量距离的第一个元素开始计算索引号来测量。例如,数组为 [ 1, 2, 3, 4, 5 ],假设我们要找到 2 到 4 之间的距离,则距离将为 2,因为 2 之后有两个元素 3 和 4。

给定问题的逻辑

为了找到数组中元素之间的距离,我们将定义我们所说的距离。因此,我们可以将距离定义为从数组中的一个元素移动到另一个元素所需的步数。两个相邻元素之间的距离将为 1,而数组中相距较远的两个元素之间的距离将大于 1。因此,我们将定义一个函数,并在该函数中传递三个参数:数组、第一个元素和第二个元素。借助 indexOf 方法,我们需要找到函数中传递的两个元素的索引。为了计算距离,我们将找到两个元素的两个索引之间的差值。并返回距离的结果。

算法

步骤 1 − 声明一个函数来查找两个元素之间的距离,并将其命名为 findDistance。在其中传递三个参数,arr、item1 和 item2。

步骤 2 − 使用 indexOf 方法查找函数中传递的两个元素的索引。

步骤 3 − 定义一个名为 distance 的变量,我们将在其中存储两个元素之间的距离。使用 Math.abs 函数并传递上面计算出的两个元素的索引。

步骤 4 − 在函数结束时返回距离。

步骤 5 − 定义数组并通过调用函数控制台输出。

算法代码

//function to calculate the distance between two items
function findDistance(arr, item1, item2) {
   let index1 = arr.indexOf(item1);
   let index2 = arr.indexOf(item2);
   let distance = Math.abs(index1 - index2);
   return distance;
   }
const arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
console.log("The distance between two items:");
console.log(findDistance(arr, 10, 50));

复杂度

创建的函数花费的时间为 O(n),其中 n 是输入数组的长度。原因是 indexOf 方法用于搜索整个数组以查找传递的元素的索引。并且此过程需要在函数中执行两次。

结论

在上面的代码中,我们将数组中元素之间的距离定义为在给定数组中从一个元素移动到另一个元素所需的步数。因此,我们使用了 indexOf 方法来找出两个元素的索引并计算了元素之间的差值。时间复杂度为 O(n),其中 n 是输入数组的长度。

更新于: 2023年5月18日

1K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.