取数组项的平均值

Take the average of an array items

尝试获取平均值。我有 json 数据进入其中,获取数组并在其上使用平均函数。但是错误 returns...

TypeError: arr.reduce is not a function

它来自第一个 console.log(myArray),如下面的屏幕截图所示。第二个 console.log 具有 avg 功能,不工作...

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

这就是 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)
}
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 并获取整数。因此错误。