JavaScript - 查找数组中元素之间的距离


假设我们有一个按升序排序的数字数组:

const arr = [2, 5, 7, 8, 9];

我们需要编写一个 JavaScript 函数,它接收这样一个数组作为输入。该函数应该为输入数组的每个元素构造一个新的子数组。

子数组应包含差值(该元素与后续元素之间的差值,一个接一个)。

因此,对于第一个数组元素,差值为:

5 - 2 = 3
7 - 2 = 5
8 - 2 = 6
9 - 2 = 7

因此,第一个元素的子数组应该是:

[3, 5, 6, 7]

类似地,对于第二个元素,它应该是:

[2, 3, 4]

对于第三个元素:

[1, 2]

第四个:

[1]

由于第五个是最后一个元素,因此没有剩余的元素与之比较,所以我们不考虑最后一个元素。

因此,整个数组的输出应该是:

const output = [
   [3, 5, 6, 7],
   [2, 3, 4],
   [1, 2],
   [1]
];

示例

代码如下:

const arr = [2, 5, 7, 8, 9];
const distanceBetween = (arr,r = []) => {
   if(r.length <= arr.length-2) {
      let temp = [];
      let b = arr[r.length];
      arr.forEach(e => temp.push(e - b));
      r.push(temp.filter(e => e > 0));
      return distanceBetween(arr,r);
   } else {
      return r;
   };
}
console.log(distanceBetween(arr));

输出

控制台输出将是:

[ [ 3, 5, 6, 7 ], [ 2, 3, 4 ], [ 1, 2 ], [ 1 ] ]

更新于:2020年11月25日

263 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告