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}]