[0,1,2,3,4,5,6,7,8,9,10,11,12].map((num, i, arr) =>{return arr.slice(i, i + 11).reduce((x, y)=>{return (x + y) / 11})})
zohan
2018-03-12 18:40:50 +08:00
reduce +1
lambdaxs
2018-03-12 18:43:11 +08:00
输入数组为 a,输出数组为 b a 数组中的每一个元素都可以通过一个映射关系转化为 b 数组中对应的元素 所以确定可以使用 Array.map 函数,然后来写 map 中的 f f 为向后取最大 10 个元素累加求平均的函数 先实现 f,再把 f 扔到 map 里 work~~
rabbbit
2018-03-12 18:49:08 +08:00
唔,好像写错了 [0,1,2,3,4,5,6,7,8,9,10,11,12].map((num, i, arr) =>{return arr.slice(i, i + 11).reduce((x, y, i, arr)=>{return (x + y) / arr.length})})
rabbbit
2018-03-12 18:56:04 +08:00
上边那个还是不对... 算了不管了 [0,1,2,3,4,5,6,7,8,9,10,11,12].map((num, i, arr) =>{return arr.slice(i, i + 11).reduce((x, y)=>{return x + y}) / arr.slice(i, i + 11).length})
let a = [11,21,34,65,14,5,66,17,88,21,45,61,50] ; let b = a.length; for(let i = 0; i< 10; i++) {a.push(0)}; let result = []; for (let i = 0;i < b; i++) { result.push( (a[i] + a[i+1] + a[i+2] + a[i+3] + a[i+4] + a[i+5] + a[i+6] + a[i+7] + a[i+8] + a[i+9])/10); }
AlisaDestiny
2018-03-12 20:53:29 +08:00
```javascript var arr = [11,21,34,65,14,5,66,17,88,21,45,61,50]; var sum = 0; for(var i=0;i<10 && i<arr.length;i++){ sum += arr[i]; } while(arr.length > 0){ var avg = sum / Math.min(arr.length,10); console.log("avg:" + avg); if(arr.length>10){ sum += arr[10]; } sum -= arr.shift(); } ``` 复杂度:O(n)