在JavaScript中插入“缺失的年份”?

在JavaScript中插入“缺失的年份”?,javascript,algorithm,csv,interpolation,Javascript,Algorithm,Csv,Interpolation,之前: 之后: 那么基本上,什么是基于JS中相邻值填充间隙/插值的最有效方法 如果您只需要直线插值,则给定n_0和n_1作为您知道其值的索引: val[n] = val[n_0] + (n - n_0) * (val[n_1] - val[n_0]) / (n_1 - n_0); 例如,根据SE的数据,1960年的插值为: 67.8 + (1960 - 1952) * (82 - 67.8) / (1965 - 1952) i、 e.大约76.5JS作为一种语言,没有任何工具可以直接帮助您

之前:

之后:


那么基本上,什么是基于JS中相邻值填充间隙/插值的最有效方法

如果您只需要直线插值,则给定n_0和n_1作为您知道其值的索引:

val[n] = val[n_0] + (n - n_0) * (val[n_1] - val[n_0]) / (n_1 - n_0);
例如,根据SE的数据,1960年的插值为:

67.8 + (1960 - 1952) * (82 - 67.8) / (1965 - 1952)

i、 e.大约76.5

JS作为一种语言,没有任何工具可以直接帮助您

可以很容易地实现线性或多项式插值。3的多项式可能在中间提供稍微好一些的数字,虽然端点可能有问题-取决于数据。 线性插值更容易,尽管总体上我认为它不会给出像高次多项式插值那样精确的估计

另一种选择可能是三次样条曲线,它们相对容易,对于您的目的来说,它们的精度足够高。这可能有点过分,尽管可能不确定这个要求的范围

您可以考虑这样做服务器端,并使用许多库中的一个来实现实现这些插值函数的其他语言。这将为您提供一种真正准确和通用的方法来高效地解决问题,而无需自己实施


很难说,因为准确度、数据范围和项目范围都将您需要的插值类型考虑在内,如果可以在服务器/客户端进行插值,等等。

谢谢@Alnitak。您能否进一步帮助我,概述一个函数,该函数在给定[{year:1950,value:50},{year:1955,value:55},{year:1970,value:65}]时返回空白填充数组?例如,返回的数组应该有20个元素。您使用了错误的数据结构-因为它是由整数索引的,所以您应该使用数组,而不是对象。
val[n] = val[n_0] + (n - n_0) * (val[n_1] - val[n_0]) / (n_1 - n_0);
67.8 + (1960 - 1952) * (82 - 67.8) / (1965 - 1952)