我的脚本不能只打印数据中的最后一个标记,我的脚本应该打印zil,因为它是我数据中最大的变化
var olddata =
[
{"token": "NORD", "oldprice": 1},
{"token": "DYP", "oldprice": 2.43},
{"token": "ZIL", "oldprice": 0.20},
{"token": "VET", "oldprice": 6.33}
]
var newdata =
[
{"token": "NORD", "newprice": 1.20},
{"token": "DYP", "newprice": 2.80},
{"token": "ZIL", "newprice": 0.40},
{"token": "VET", "newprice": 6.90}
]
function findBiggestChange(oldData, newData) {
var previousDifference = null;
var changeIndex;
oldData.forEach((obj, i) => {
var data = newData.find(d => d.token === obj.token);
var currentDifference = previousDifference ? Math.abs.forEach(data.newprice - obj.oldprice) : data.newprice;
changeIndex = currentDifference > previousDifference ? i : 0;
});
}
findBiggestChange(olddata,newdata);
3条答案
按热度按时间0vvn1miw1#
如果你的意思是数量上的“最大变化”,那么你的程序是正确的。因为:
zil:0.40-0.20=0.20
vet:6.90-6.33=0.57(vet的增加在数量上更高)
如果你的“最大变化”是按百分比计算的,那么你需要改变以百分比而不是数量来检查变化的方式。在这种情况下,最大的变化是…:
zil:0.40/0.20=2=>2-1=1=100%(zil百分比增加更高)
兽医:6.90/6.33=1.09=>1.09-1=0.09=9%兽医:6.90/6.33=1.09=>1.09-1=0.09=9%
如果您的“最大变化”是按百分比计算的,那么您要查找的代码是:
6ovsh4lw2#
以下代码给出了zil对象作为结果,因为它具有最大的差异。
ujv3wf0j3#
我们可以使用array.map创建更改列表,包括绝对(更改)和百分比(百分比更改)。
使用array.sort,我们将按照百分比变化的降序进行排序,以获得最大的百分比变化: