尝试获取平均值。我里面有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));
}
}
答案 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)
}