遍历数组,但不是每个元素

时间:2019-02-27 14:50:42

标签: javascript loops

我想遍历数组并从5个下一个元素而不是整个数组中获取平均值。我尝试通过下面的代码来做到这一点,但是没有用。我感谢任何形式的帮助或建议。

 function standardDeviation(array) {
        let newArray = [];
        for (let i = 0; i < array.length; i++) {
          let tempArray = []; 
          const arrAvg = tempArray =>
            tempArray.reduce((a, b) => a + b, 0) / tempArray.length;
          newArray += tempArray;

          for (let j = array[i]; (j = array[i + 5]); i++) {
            tempArray += array[j];
          }
        }
        console.log(newArray);
        return newArray;
      }
      var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
      standardDeviation(arr);

2 个答案:

答案 0 :(得分:2)

您可以对给定的数组进行切片,并仅获取五个元素即可得出平均值。

function standardDeviation(array) {
    const arrAvg = tempArray => tempArray.reduce((a, b) => a + b, 0) / tempArray.length;
    return array.map((_, i, a) => arrAvg(a.slice(i, i + 5)));
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(standardDeviation(arr));

答案 1 :(得分:0)

您可以尝试使用数组元素的slice()函数。

// simulated loop index
var curr_index_pos = 3; 
// entire array
var array_full = [1,2,3,4,5,6,7,8,9,10]; 

// array with 5 next values from "curr_index_pos"
var array_5 = array_full.slice(curr_index_pos,curr_index_pos+5); 

var sum = 0;
for( var i = 0; i < array_5.length; i++ ) {
   sum += parseInt( array_5[i] ); 
}

var avg = sum/array_5.length;

console.log("array_5", array_5);
// [4,5,6,7,8]
console.log("sum", sum);
// 30
console.log("avg", avg);
// 6