问题
我有一个数组,它是类道路的一个属性,它定义了道路上允许的车辆类型,并提供了每种类型有助于交通的近似部分:
[[bus,.2],[smallCar,.6],[bigCar,.2]]
考虑到交通比例,我需要计算在道路上遇到的汽车的平均长度。 (这需要在课堂的其他地方进行一些基本的计算。)
我尝试了什么:
我无法完全理解这种做法。在我的解决方案中,保真度随着车数的增加而变化。这似乎是一个非常缓慢,严厉的方法而且不对。要改进的功能名为averageVehicleLaneSpace。
一个非常配对的但更大的类的工作版本:
road = function(){};
road.prototype.averageVehicleLaneSpace = function(){
var sum = 0;
var fakeCarCount = 10000;
for( var i = 0; i< this.allowedVehicleTypes.length; i++){
var type = this.allowedVehicleTypes[i][0];
var perc = this.allowedVehicleTypes[i][1];
for(n = 0; n<=fakeCarCount*perc; n++){
sum += vehicle[type].laneSpace;
}
}
return sum/fakeCarCount;
}
//define vehicles
var vehicle = {
bus:{
laneSpace:14
},
smallCar:{
laneSpace:4
},
bigCar:{
laneSpace:4.5
}
};
var t = new road();
t.allowedVehicleTypes = [["bus",.1],["smallCar",.3],["bigCar",.6]];
alert(t.averageVehicleLaneSpace());
小提琴:
这个小提琴是上面有希望的例子:The fiddle。
答案 0 :(得分:1)
平均值是每种车型ratio * laneSpace
的总和。因此,计算平均值就像:
road.prototype.averageVehicleLaneSpace = function(){
var avg = 0;
for (var i = 0; i < this.allowedVehicleTypes.length; i++) {
var type = this.allowedVehicleTypes[i][0];
var perc = this.allowedVehicleTypes[i][1];
avg += perc * vehicle[type].laneSpace;
}
return avg;
}