Javascript 计算与数据点数组平均值的最大距离,并返回相关数据点

Javascript 计算与数据点数组平均值的最大距离,并返回相关数据点,javascript,arrays,Javascript,Arrays,假设我有一个数据数组,如下所示: var data = [{name: "craig", value: 10}, {name: "oliver", value: 15}] 我想使用一个允许以下参数的函数: function separateTheWheatFromTheChaff(windowSize, pointsTaken, data, valueAccessor) {} 其中WindowsSize是要计算的数组位置数,pointsTaken是要返回的数据点数 所以我知道我需要求和,从中

假设我有一个数据数组,如下所示:

var data = [{name: "craig", value: 10}, {name: "oliver", value: 15}]
我想使用一个允许以下参数的函数:

function separateTheWheatFromTheChaff(windowSize, pointsTaken, data, valueAccessor) {}
其中WindowsSize是要计算的数组位置数,pointsTaken是要返回的数据点数

所以我知道我需要求和,从中得到平均值。我需要计算每个数组位置相对于平均值的math.abs,并比较每个结果,以找到距离平均值最远的数据点数组位置,然后将原始数据点值返回到新数组

到目前为止,我已经:

var data = [{name: "craig", value: 10}, {name: "oliver", value: -10}]

function separateTheWheatFromTheChaff(windowSize, pointsTaken, data, valueAccessor) {    
    var i;
    sum = 0;
    for(i = 0; i < windowSize; i++) {
        sum += valueAccessor(data[i]);
    }
    mean = sum/windowSize   
    for (i = 0; i < windowSize; i++) {
        Math.abs(valueAccessor(data[i]) - mean)
    }
} 

separateTheWheatFromTheChaff(5, 1, data, function(item) { return item.value });
var data=[{name:“craig”,value:10},{name:“oliver”,value:-10}]
函数将Wheat与CHAFF(窗口大小、点状态、数据、值访问器)分开{
var i;
总和=0;
对于(i=0;i
因此,我的问题是,我需要如何修改 从HAFF函数中分离Wheat以计算阵列位置 使用距离平均值最远的数据点,并返回所述数据点 到一个新数组

提前感谢,我希望这是有意义的。

这里有一种方法:

编辑答案:

//create an array to store all distances
var distances = []; 
for (i = 0; i < windowSize; i++) {
    //calculate distance from mean
    var distance = Math.abs(valueAccessor(data[i]) - mean);
    //store initial datapoint with its distance from mean in array
    var datapoint_w_distance = {datapoint: data[i], 
                                dist: distance}
    distances.push(datapoint_w_distance)
}
//sort array so datapoint with largest distance from mean is first
distances.sort(function(a,b) {return b.dist-a.dist});
//use the pointsTaken parameter to get the correct number of original datapoints back
var wheat = [];
for (var j=0; j < pointsTaken; j++) {
   wheat.push(distances[j].datapoint)
}
return wheat;
然后
将wheat与haff(5,2,数据,函数(item){return item.value})分开
返回数组
[{name:“d”,value:100},{name:“c”,value:90}]


工作小提琴:

到底是什么问题?您还没有真正提出问题。我添加了一段引文来澄清问题。@Hicki我编辑了我的答案,以符合我认为您需要的内容,这样您就可以获得多个数据点。
var data = [{name: "a", value: 20}, 
            {name: "b", value: 10},
            {name: "c", value: 90},
            {name: "d", value: 100},
            {name: "e", value: 0}]