取数组项的平均值

时间:2019-02-04 07:22:46

标签: javascript vue.js vuejs2

尝试获取平均值。我里面有json数据,抓取数组并在上面使用平均值函数。但是错误返回...

  

TypeError:arr.reduce不是函数

它是从第一个console.log(myArray)开始,如下图所示。第二个具有avg功能的console.log,不起作用...

data() {
    return {
        myArray:[],
    }
},    
methods: {
    avgArray: function(){
        const sum = arr => arr.reduce((a,c) => (a + c));
        const avg = arr => sum(arr) / arr.length;
        this.estates.forEach((a, index) => {
            this.myArray = a.m2_price;
            console.log(this.myArray);
        });

        console.log(avg(this.myArray));
    }
}

2 个答案:

答案 0 :(得分:1)

avgArray: function(){
    const sum = arr => arr.reduce((a,c) => (a += c),0); // add equals and init with 0
    const avg = arr => sum(arr) / arr.length;
    this.myArray = this.estates.map(a =>  a.m2_price)
    console.log(avg(this.myArray));
}

您正在将this.myArray设置为值而不是数组。您既可以按m2_price的价格,也可以像上面那样映射它

Reduce函数仅在数组上存在。显然,您正在记录this.myArray并获取整数。因此是错误。

答案 1 :(得分:0)

这就是reduce的目的

const average = array => (array && array.length) ? (array.reduce((sum, item) => sum + item, 0) / array.length) : undefined;


console.log(average([1,2,3,4,5,6]));

从名为average.js的文件中导出平均值函数

适用于您的情况

import { average } from 'pathToYourIncludeLibrary/average';

data() {
    return {
        myArray:[],
    }
},    
methods: {
    avgArray: () => average(this.myArray)
}