使用JavaScript从2d数组计算加权平均值
我试图从2d javascript数组计算加权平均值。 这是阵列:使用JavaScript从2d数组计算加权平均值,javascript,arrays,weighted-average,Javascript,Arrays,Weighted Average,我试图从2d javascript数组计算加权平均值。 这是阵列: var timestamp = [ [1524751200, 6000], [1556287200, 6000], [1587909600, 6000], [1619445600, 6000], [1650981600, 3000], [1682517600, 3000], [1714140000, 3000], [1745676000, 3000], [1777212000, 1500],
var timestamp = [
[1524751200, 6000],
[1556287200, 6000],
[1587909600, 6000],
[1619445600, 6000],
[1650981600, 3000],
[1682517600, 3000],
[1714140000, 3000],
[1745676000, 3000],
[1777212000, 1500],
[1808748000, 1500],
[1840370400, 1500],
[1871906400, 1500],
[1903442400, 750],
[1934978400, 750],
[1966600800, 750],
[1998136800, 750],
[2029672800, 375],
[2061208800, 375],
[2092831200, 375],
[2124367200, 375],
[2155903200, 187.5],
[2187439200, 187.5],
[2219061600, 187.5],
[2250597600, 187.5],
[2282133600, 93.75],
[2313669600, 93.75],
[2345292000, 93.75],
[2376828000, 93.75],
[2408364000, 46.875],
[2439900000, 46.875],
[2471522400, 46.875],
[2503058400, 46.875],
[2534594400, 23.4375],
[2566130400, 23.4375],
[2597752800, 23.4375],
[2629288800, 23.4375],
[2660824800, 11.71875],
[2692360800, 11.71875],
[2723983200, 11.71875],
[2755519200, 11.71875],
[2787055200, 5.859375],
[2818591200, 5.859375],
[2850213600, 5.859375],
[2881749600, 5.859375],
[2913285600, 2.9296875],
[2944821600, 2.9296875],
[2976444000, 2.9296875],
[3007980000, 2.9296875],
[3039516000, 1.46484375],
[3071052000, 1.46484375],
[3102674400, 1.46484375],
[3134210400, 1.46484375],
[3165746400, 0.732421875],
[3197282400, 0.732421875],
[3228904800, 0.732421875],
[3260440800, 0.732421875],
[3291976800, 0.3662109375],
[3323512800, 0.3662109375],
[3355135200, 0.3662109375],
[3386671200, 0.3662109375],
[3418207200, 0.18310546875],
[3449743200, 0.18310546875],
[3481365600, 0.18310546875],
[3512901600, 0.18310546875],
[3544437600, 0.091552734375],
[3575973600, 0.091552734375],
[3607596000, 0.091552734375],
[3639132000, 0.091552734375],
[3670668000, 0.0457763671875],
[3702204000, 0.0457763671875],
[3733826400, 0.0457763671875],
[3765362400, 0.0457763671875],
[3796898400, 0.02288818359375],
[3828434400, 0.02288818359375],
[3860056800, 0.02288818359375],
[3891592800, 0.02288818359375],
[3923128800, 0.011444091796875],
[3954664800, 0.011444091796875],
[3986287200, 0.011444091796875],
[4017823200, 0.011444091796875],
[4049359200, 0.0057220458984375],
[4080895200, 0.0057220458984375],
[4112431200, 0.0057220458984375],
[4143967200, 0.0057220458984375],
[4175503200, 0.0028610229492188],
[4207039200, 0.0028610229492188],
[4238661600, 0.0028610229492188],
[4270197600, 0.0028610229492188],
[4301733600, 0.0014305114746094],
[4333269600, 0.0014305114746094],
[4364892000, 0.0014305114746094],
[4396428000, 0.0014305114746094],
[4427964000, 0.0007152557373047],
[4459500000, 0.0007152557373047],
[4491122400, 0.0007152557373047],
[4522658400, 0.0007152557373047],
[4554194400, 0.00035762786865235],
[4585730400, 0.00035762786865235],
[4617352800, 0.00035762786865235],
[4648888800, 0.00035762786865235]
];
第1列表示时间戳,每一列表示未来100年内每年的26.04日,第2列表示基本上每4年减半一次的值。
必须在第2列中的所有值之间计算加权平均值,每个值的计算次数即为该值的权重。我必须应用的条件是从用户输入中获取的日期,我只需要计算与所有时间戳相对应的值,这些时间戳小于用户输入给定的日期。
我不知道从哪里开始。您可以选择比输入日期小的日期,然后使用
var timestamp=[[15247512006000]、[15562872006000]、[158790996006000]、[1619445606000]、[16509816003000]、[16825176003000]、[17141400003000]、[17456760003000]、[17772120001500]、[18087480001500]、[18403704001500]、[18719034424007500]、[1934978400750]、[1966600800750]、[1998136800750]、[2029672800375]、[2061208800375],[2092831200,375],[2124367200,375],[2155903200,187.5],[2187439200,187.5],[2219061600,187.5],[2250597600,187.5],[2282133600,93.75],[2313669600,93.75],[2345292000,93.75],[2376828000,93.75],[2408364000,46.875],[2439900000,46.875],[2471522400,46.875],[2503058400,46.875],[2534594400,23.4375],[2566130400,23.4375],[2597752800,23.4375],[2629288800,23.4375],[2660824800,11.71875],[2692360800,11.71875],[2723983200,11.71875],[2755519200,11.71875],[2787055200,5.859375],[2818591200,5.859375],[2850213600,5.859375],[2881749600,5.859375],[2913285600,2.9296875],[2944821600,2.9296875],[2976444000,2.9296875],[3007980000,2.9296875],[3039516000,1.46484375],[3071052000,1.46484375],[3102674400,1.46484375],[3134210400,1.46484375],[3165746400,0.732421875],[3197282400,0.732421875],[3228904800,0.732421875],[3260440800,0.732421875],[3291976800,0.3662109375],[3323512800,0.3662109375],[3355135200,0.3662109375],[3386671200,0.3662109375],[3418207200,0.18310546875],[3449743200,0.18310546875],[3481365600,0.18310546875],[3512901600,0.18310546875],[3544437600,0.091552734375],[3575973600,0.091552734375],[3607596000,0.091552734375],[3639132000,0.091552734375],[3670668000,0.0457763671875],[3702204000,0.0457763671875],[3733826400,0.0457763671875],[3765362400,0.0457763671875],[3796898400,0.02288818359375],[3828434400,0.02288818359375],[3860056800,0.02288818359375],[3891592800,0.02288818359375],[3923128800,0.011444091796875],[3954664800,0.011444091796875],[3986287200,0.011444091796875],[4017823200,0.011444091796875],[4049359200,0.0057220458984375],[4080895200,0.0057220458984375],[4112431200,0.0057220458984375],[4143967200,0.0057220458984375],[4175503200,0.0028610229492188],[4207039200,0.0028610229492188],[4238661600,0.0028610229492188],[4270197600,0.0028610229492188],[4301733600,0.0014305114746094],[4333269600,0.0014305114746094],[4364892000,0.0014305114746094],[4396428000,0.0014305114746094],[4427964000,0.0007152557373047],[4459500000,0.0007152557373047],[4491122400,0.0007152557373047],[4522658400,0.0007152557373047],[4554194400,0.00035762786865235],[4585730400,0.00035762786865235],[4617352800,0.00035762786865235],[4648888800,0.00035762786865235]];
const calculateAverage=(日期)=>{
const filter=timestamp.filter(a=>a[0]*1000<新日期(Date));
const average=filter.reduce((r,a)=>r+a[1],0)/filter.length;
收益率平均值;
}
控制台日志(calculateAverage(“10/10/2023”))
到目前为止,您尝试了什么?输出应该是什么,以及背后的原因是什么?欢迎您这样做。请阅读和。因此,这不是要求提供教程的地方,也不是寻找免费程序员的地方。您的问题应该表明您在解决自己的问题方面付出了一些努力,并且应该在没有wri的情况下回答ting半本书。输出必须是一个代表加权平均数的整数。我试图计算一项投资的复利,利率每4年变化一次。利率与第2列中每4年减半的值成比例。是的,但输出必须是什么?是的,timstamp是以秒为单位。这是一个好的开始!我只需要计算加权平均值,根据我看到的,您正在计算所有值之间的平均值。非常感谢!!!@GeorgeS为日期10/10/2023
,将输出什么?它不是5000
?(6000+6000+6000+3000+3000)/6
与(4*6000+2*3000)/(4+2)
是的,我误解了你的代码。是的,这是正确的:)谢谢!