0

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]));

ありがとう。

4

4 に答える 4

2

メソッドを使用すると、これを非常に簡単に行うことができますapply。この関数は、配列の内容をパラメーターとして関数を呼び出すために使用されます。

speedAverage.apply(null, auto);
于 2013-11-06T09:58:34.083 に答える
0

配列オブジェクトを関数に渡したいと思います:

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

speedAverage(自動)で呼び出します

可変数の引数を持つ関数を探している場合は、引数について読むこともできます。

于 2013-11-06T10:02:21.557 に答える
0

コンストラクターに静的関数を追加し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());

argumentsまたは、次のapply()ように使用できます。

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));
于 2013-11-06T10:39:38.777 に答える
0

配列にすべてのデータが既にautoあるため、reduce 関数を使用します。

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

の呼び出しreduceは、 内のすべての車の速度の合計を返しますauto。除算を車の数で割ると、平均が得られます。

于 2013-11-06T11:11:22.480 に答える