首页 > 解决方案 > 函数 calcAverage 怎么可能返回(提示)?

问题描述

我正在学习关于 Udemy 的课程,但我无法理解下面的代码。我想知道calcAverage(tips)代码底部的函数如何可以访问对象 john 和 mark 的属性提示。

var john = {
    fullName: 'John Smith',
    bills: [124, 48, 268, 180, 42],
    calcTips: function() {
        this.tips = [];
        this.finalValues = [];
                
        for (var i = 0; i < this.bills.length; i++) {
            // Determine percentage based on tipping rules
            var percentage;
            var bill = this.bills[i];
            
            if (bill < 50) {
                percentage = .2;
            } else if (bill >= 50 && bill < 200) {
                percentage = .15;
            } else {
                percentage = .1;
            }
            
            // Add results to the corresponing arrays
            this.tips[i] = bill * percentage;
            this.finalValues[i] = bill + bill * percentage;
        }
    }
}

var mark = {
    fullName: 'Mark Miller',
    bills: [77, 475, 110, 45],
    calcTips: function() {
        this.tips = [];
        this.finalValues = [];
                
        for (var i = 0; i < this.bills.length; i++) {
            // Determine percentage based on tipping rules
            var percentage;
            var bill = this.bills[i];
            
            if (bill < 100) {
                percentage = .2;
            } else if (bill >= 100 && bill < 300) {
                percentage = .1;
            } else {
                percentage = .25;
            }
            
            // Add results to the corresponing arrays
            this.tips[i] = bill * percentage;
            this.finalValues[i] = bill + bill * percentage;
        }
    }
}

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

标签: javascript

解决方案


calcAverage对对象markjohn. 它只是一个期望数组作为参数的函数。它将计算传入数组的平均值:

var mark = {
  fullName: 'Mark Miller',
  bills: [77, 475, 110, 45],
  calcTips: function() {
      this.tips = [];
      this.finalValues = [];
              
      for (var i = 0; i < this.bills.length; i++) {
          // Determine percentage based on tipping rules
          var percentage;
          var bill = this.bills[i];
          
          if (bill < 100) {
              percentage = .2;
          } else if (bill >= 100 && bill < 300) {
              percentage = .1;
          } else {
              percentage = .25;
          }
          
          // Add results to the corresponing arrays
          this.tips[i] = bill * percentage;
          this.finalValues[i] = bill + bill * percentage;
      }
  }
}

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

mark.calcTips() // calculates tips and store as tips property

// pass mark.tips into function
console.log("Mark's tip average:", calcAverage(mark.tips))


推荐阅读