在JavaScript数组中填写缺少的数值

给定n个条目的数组,其中只有2个是Numbers,所有其他条目均为null。像这样-

const arr = [null, null, -1, null, null, null, -3, null, null, null];

我们应该编写一个接受此数组的函数,并完成这两个数字组成的算术序列。为了更清楚地理解此问题,我们可以将这些空值视为需要填充数字的空白,以便整个数组形成算术级数。

关于算术级数

如果通过将常数d加到第(n-1)个数上而形成该数组中的任意数字n,则表示该数列/数数组形成算术级数。

示例-

1, 2, 3, 4, 5, 6, 7, 8

在此,通过在前面的数字上加上一个常数(在这种情况下为1)来获得每个后续数字。

其他例子-

1, 1, 1, 1, 1, 1, 1, 1, 1

10, 8, 6, 4, 2, 0, -2

该系列的第一个元素通常用a表示,每个数的恒定级数(共同差)用d表示。

因此,如果我们用Tn表示任何此类序列的第n个元素,

Tn = a + (n -1)d

其中,n是该数字从1开始的索引。

清除这些问题后,让我们为刚刚描述的问题编写代码。我们将首先尝试找到数组的第一个元素(a)和共同差异(d)。一旦有了这些,我们将在原始数组上运行循环以生成序列。

示例

const arr = [null, null, -1, null, null, null, -3, null, null, null];

const arr2 = [null, null, -1, null, null, null, 12, null, null, null,

null, null, null];

const constructSeries = (arr) => {

   const map = {

      first: undefined,

      last: undefined

   };

   arr.forEach((el, ind) => {

      if(el !== null){

         if(map['first']){

            map['last'] = [el, ind];

         }else{

            map['first'] = [el, ind];

         }

      };

   });

   const { first, last } = map;

   const commonDifference = (last[0] - first[0])/(last[1] - first[1]);

   const firstElement = (first[0]) - ((first[1])*commonDifference);

   return arr.map((item, index) => {

      return firstElement + (index * commonDifference);

   });

};

console.log(constructSeries(arr));

console.log(constructSeries(arr2));

输出结果

控制台中的输出将为-

[

   0, -0.5, -1, -1.5,

   -2, -2.5, -3, -3.5,

   -4, -4.5

]

[

   -7.5, -4.25, -1,

   2.25, 5.5, 8.75,

   12, 15.25, 18.5,

   21.75, 25, 28.25,

   31.5

]

以上是 在JavaScript数组中填写缺少的数值 的全部内容, 来源链接: utcz.com/z/331052.html

回到顶部