在数组中获取高于平均值的值-JS

时间:2019-12-15 19:13:54

标签: javascript arrays

我试图获取所有高于给定数组平均值的数字。 (这进入HTML页面,因此与document.write一起使用 这是我写的:

sumAndBigger(arrayMaker());

function sumAndBigger(array) {
  for (i = 0; i < array.length; i++) {
    sum += array;
  }
  var equalAndBigger = []
  var avg = sum / array.length;
  for (i = 0; i < array.length; i++) {
    if (array[i] > avg) {
      equalAndBigger.push(array[i])
    }
  }
  document.write('The numbers are: ' + equalAndBigger)
}

function arrayMaker() {
  var array = [];
  for (i = 0; i < 5; i++) {
    var entrie = +prompt('Enter a number: ');
    array.push(entrie)
  }
  return array;
}

这似乎不起作用..我在这里做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:2)

好吧,所以我在这里给您提供一线代码,以从数组中获取所有“严格大于”平均值的元素

let array = [1, 2, 3, 4, 5]
let allNums = array.filter(v => v > array.reduce((x, y) => x + y) / array.length);

说明

  • array.reduce((x, y) => x + y)→数组中所有元素的总和
  • array.reduce((x, y) => x + y) / array.length→得到平均值

输出

[4, 5]

更多详细代码

function getAverage(arr) {
  let sum = 0;

  for (let i = 0; i < arr.length; i++) {
    sum += arr[i];
  }
  return sum / arr.length;
}

function getGreaterThanAverage(arr) {
  let avg = getAverage(arr);
  let numbers = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] > avg) {
      numbers.push(arr[i]);
    }
  }

  return numbers;
}