цикл по массиву, но не каждый элемент - PullRequest
0 голосов
/ 27 февраля 2019

Я бы хотел перебрать массив и получить среднее значение по 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 голосов
/ 27 февраля 2019

Вы можете попробовать использовать функцию 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
0 голосов
/ 27 февраля 2019

Вы можете нарезать данный массив и взять только пять элементов для получения среднего.

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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...