关于" var avg = array.average()"中的array.average()功能的混淆

时间:2018-03-26 03:38:46

标签: javascript arrays function

干杯队员。我被要求让这个代码在学习挑战中工作,我不知道如何处理" array.average()"部分,因为它不是一个功能。

我被问到的是:

var array = [5,44,23,11,55,68];
var avg = array.average();
console.log(avg);

到目前为止,我已经像这样处理了数组的平均值:

function average(){
 var total = 0;
  for (var i = 0; i < array.length; i++) {
   total += array[i];
  }
 var avg = total / array.length;
}

欢迎任何和所有更正。这是基于100%的学习,所以一切都有帮助。

3 个答案:

答案 0 :(得分:2)

首先将函数附加到数组对象,然后确保在结尾处返回一个值:

Order

(避免改变原生原型)

答案 1 :(得分:1)

假设您需要将它添加到Array.prototype中(这是一个坏主意),使用Object.defineProperty将其添加为不可枚举的并且不会与其他本机方法发生冲突:

&#13;
&#13;
var array = [5,44,23,11,55,68];

Object.defineProperty(Array.prototype, 'average', {
    enumerable: false,
    value: () => array.reduce((a,b) => a + b) / array.length
});

console.log(array.average())
&#13;
&#13;
&#13;

答案 2 :(得分:0)

average功能添加到Array.prototype

&#13;
&#13;
var arr = [5,44,23,11,55,68];

Array.prototype.average = function() { 
  return this.reduce(function(acc, cur) { return (acc + cur); }, 0) / this.length;
}

var avg = arr.average();
console.log(avg);
&#13;
&#13;
&#13;