一次将所有对象调用到函数中,返回每个对象的特定计算

Call Objects all at once into Function returning a specific calculation with each of them?

本文关键字:对象 返回 计算 函数 一次 调用      更新时间:2023-09-26

如何在没有显式方式的情况下调用var auto的每个对象?

我的意思是不必在函数调用、speedAverage函数和用于计算平均值的return中编写它们中的每一个。

function Car (model, speed) {
    this.model = model;
    this.speed = speed;
}

var speedAverage = function(car1, car2, car3) {
    return (car1.speed + car2.speed + car3.speed)/ veh.length;
};

var auto = [
new Car("BMW", 220),
new Car("Ford", 260),
new Car("DeLorean", 350)
];
console.log("The average between these cars is " + speedAverage(auto[0], auto[1], 
auto[2]));

谢谢。

您可以使用

apply方法非常轻松地执行此操作。此函数用于调用以数组内容作为参数的函数:

speedAverage.apply(null, auto);

我认为您想将数组对象传递给函数:

var speedAverage = function (arr) {
  var sum=0
  for(var i=0; i<arr.length; i++) {
     sum += arr[i];
  }
  return sum/arr.length;
}

并用速度平均(自动)调用它

如果您正在寻找参数数量可变的函数,您还可以阅读有关参数的信息。

添加一个静态函数来Car并在构造函数中推动速度,那么你就不必做auto的事情了:

var speeds = [];
function Car (model, speed) {
    this.model = model;
    this.speed = speed;
    speeds.push(speed);
}
Car.getAverageSpeed = function() {
  return eval(speeds.join('+'))/speeds.length;
};
new Car("BMW", 220),
new Car("Ford", 260),
new Car("DeLorean", 350)
console.log("The average between these cars is " + Car.getAverageSpeed());

或者你可以像这样使用argumentsapply()

var speedAverage = function() {
    return eval(Array.prototype.map.call(arguments, function(s) {
        return s.speed;
    }).join('+'))/arguments.length;
};
var auto = [
    new Car("BMW", 220),
    new Car("Ford", 260),
    new Car("DeLorean", 350)
];
console.log("The average between these cars is " + speedAverage.apply(0, auto));

由于您已经在 auto 数组中拥有所有数据,请使用 reduce 函数:

console.log (auto.reduce (
   function (speed, car) { 
     return speed + car.speed; 
   }, 0) / auto.length);

调用 reduce 返回 auto 中所有汽车的速度之和,除以汽车数量得到平均值。