为了账号安全,请及时绑定邮箱和手机立即绑定

JS:根据列表的最后一个元素计算节省量

JS:根据列表的最后一个元素计算节省量

米脂 2021-04-11 16:14:47
我列出了价格: prices =  [57, 69, 90, 108, 142, 216, 344, 459, 670, 1134]我需要根据最后一个计算当前元素的节省。savings = [39, 61, 68, 75, 81, 85, 87, 88, 90] #first element should be empty or dropped, as first element or **prices** doesn't have something to calculate savings on.看到具有确切值的图像:注意:我可以计算其他指标,例如平均值等。但是无法想到一种使用地图或基于列表中最后一项进行计算的方法。   var sum = prices.reduce(function (sum, value) {          return sum + value;        }, 0);   alert("SUM: " + sum);   var avg = sum / prices.length;   alert("AVG: " + avg);   var diffs = prices.map(function (value) {            var diff = value - avg;            return diff;   });   alert(diffs);
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

节省额是根据第一个项目的成本与其他项目的单位成本进行比较得出的。


所以


percentage of savings = (1 - UnitCost / BaseUnitCost) * 100

因此,使用map来计算保存量,因为它是基本单位,所以跳过了第一个索引。


var prices = [57, 69, 90, 108, 142, 216, 344, 459, 670, 1134]

var quantity = [50, 100, 200, 300, 500, 1000, 2000, 3000, 5000, 10000]

var min = prices[0]/quantity[0]

var savings = prices.map((v, i) => i ? `Save ${Math.round((1-(v/quantity[i])/min)*100)}%` : '')

console.log(savings)


查看完整回答
反对 回复 2021-04-29
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您要首先根据数量和价格计算单位成本,然后从初始单位成本中计算出节省额:


function calcUnitCosts(quantities, prices){

    if( quantities.length != prices.length ) throw 'Array sizes unequal';

    var unitCosts = [];

    for( var i = 0; i < prices.length; i++ ){

       unitCosts.push(prices[i] / quantities[i]);

    }

    return unitCosts;

}


function calcCostSavings(baseUnitCost, remainingUnitCosts){

    var costSavings = [];

    remainingUnitCosts.forEach((unitCost) => {

        costSavings.push((baseUnitCost - unitCost)/baseUnitCost)

    })

    return costSavings;

}


costSavings = calcCostSavings(unitCosts[0], unitCosts.slice(1))


查看完整回答
反对 回复 2021-04-29
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信