如何平均数组中高于阈值的元素?

How do I average the elements that are above a threshold in an array?

我正在尝试计算数组中所有大于 150 的元素的平均值。我不知道如何解决所有问题并输出正确的数字。有人可以帮忙吗?

   function averageBig(list) {
        var sum = 0;
        for (var i = 0; i < list.length && 150; i++) {
            if (list.length > 1000); {
            sum += list[i]
            }
        }    
        return (sum / list.length); 
    }
function averageBig(list) {
    var sum = 0;
    for (var i = 150; i <= list.length; i++) {
        sum += list[i]
    }    
    return (sum / list.length); 
}

我假设你说的150就是从第150位开始的数据

对列表中大于 150 的所有项目取平均值。

function averageBig(list) {
  let sum = 0;
  let items = 0;
  for (let i = 0; i < list.length; i++) {
    if (list[i] > 150) {
      sum += list[i];
      items++;
    }
  }
  return (sum / items);
}

const numbers = [ 10, 20, 50, 100, 150, 200, 300];

console.log(averageBig(numbers));
console.log((200 + 300) / 2);

你可以这样做:

function averageBig(list) {
    let listFiltered = list.filter(element => element > 150);
    let sum = 0;
    for (let i = 0; i < listFiltered.length; i++) {
            sum += listFiltered[i]
    }    
    return (sum / listFiltered.length);
}

这将过滤列表以仅获取超过 150 的元素并将其存储在名为 listFiltered 的变量中。然后循环遍历所有这些值并将其与新的 listFiltered 长度进行比较。如果您尝试根据初始 list 长度对其进行平均,您将使用的长度也包含小于 150 的值,因此会扭曲结果。

对数组中所有大于150的元素进行平均

  1. 使用过滤器提取项目 > 150

  2. 使用reduce求和

  3. 计算平均值

const entries = [10,23,151,200,233,244,299,100,123];
const filtered = entries.filter(e=>e > 150);
const sum = filtered => filtered.reduce((a,b) => a + b, 0)
const average = sum(filtered) / (filtered.length);

console.log(average);

这个函数return数组元素之和大于num,然后你可以简单地将它除以arr.length。

function sumGreaterThan(arr, num) {
     return arr.reduce((sum, cur) => {
        if (cur > num) return sum + cur;
        return sum;
     }, 0);
}