JavaScript-基于数组计算值

JavaScript-基于数组计算值,javascript,arrays,Javascript,Arrays,我有一个数组,如下图所示,其中包含许多值,我想对这些值进行一些计算,然后将它们推到一个单独的数组中 这是我使用的数组和数据的一个示例: 我想将此数据推送到一个名为formatted的数组中,该数组必须包含以下信息: 名称-取自原始数组中的名称 min-原始数组中的最小值 max-原始数组中的最大值 Q1-这是通过将p30和p40值相加并除以2,从原始数组计算得出的下四分位数 Q4-这是通过将p70和p80值相加并除以2计算得出的上四分位值 中值-这是通过将p50和p60值相加并除以2计算得出的

我有一个数组,如下图所示,其中包含许多值,我想对这些值进行一些计算,然后将它们推到一个单独的数组中

这是我使用的数组和数据的一个示例:

我想将此数据推送到一个名为formatted的数组中,该数组必须包含以下信息:

名称-取自原始数组中的名称

min-原始数组中的最小值

max-原始数组中的最大值

Q1-这是通过将p30和p40值相加并除以2,从原始数组计算得出的下四分位数

Q4-这是通过将p70和p80值相加并除以2计算得出的上四分位值

中值-这是通过将p50和p60值相加并除以2计算得出的

这是我如何试图解决这个问题的一个例子,但如下所示,我在每个值上都有一个错误:

 var formated = [];
        for(var i=0; i < final.length; i++) {    
            formated.push({
                name: final[i].name,
                min: final[i][0],
                max: final[i].length -1,
                Q1: (final[1] + final[2] / 2),
                Q2: (final[5] + final[6] / 2),
                meidan: (final[3] + final[4] / 2)
            });
        }
var格式化=[];
对于(var i=0;i

您有不同名称的对象

你叫什么

final[i][0]
应该是

final[i].p20
或类似的。
与所有其他引用相同,实际上在
final[i]
中不存在属性
0
。因此,
final[i][0]
未定义的

您有不同名称的对象

你叫什么

final[i][0]
应该是

final[i].p20
或类似的。
与所有其他引用相同,实际上在
final[i]
中不存在属性
0
。因此,
final[i][0]
未定义的

假设所有对象始终具有相同的p值,这就是您需要的:

 var formated = [];
        for(var i=0; i < final.length; i++) {    
            formated.push({
                name: final[i].name,
                min: final[i].p20,
                max: final[i].p90,
                Q1: ((final[i].p30 + final[i].p40) / 2),
                Q2: ((final[i].p70 + final[i].p80) / 2),
                median: ((final[i].p50 + final[i].p60) / 2)
            });
        }

假设所有对象始终具有相同的p值,这就是您需要的:

 var formated = [];
        for(var i=0; i < final.length; i++) {    
            formated.push({
                name: final[i].name,
                min: final[i].p20,
                max: final[i].p90,
                Q1: ((final[i].p30 + final[i].p40) / 2),
                Q2: ((final[i].p70 + final[i].p80) / 2),
                median: ((final[i].p50 + final[i].p60) / 2)
            });
        }

您可以为此使用
map
功能<代码>映射
返回一个新数组:

const数组=[
{名称:“0006”,p20:13367.8,p30:15654.2,p40:17199.8,p50:18715,p60:20285.4,p70:22654.6,p80:24910.2,p90:30394.2}
];
var formatted=array.map(el=>({
姓名:el.name,
最小值:el.p20,
最大值:el.p90,
Q1:((el.p30+el.p40)/2),
Q2:((el.p70+el.p80)/2),
中值:((el.p50+el.p60)/2)
}));

console.log(格式化)您可以为此使用
map
功能<代码>映射
返回一个新数组:

const数组=[
{名称:“0006”,p20:13367.8,p30:15654.2,p40:17199.8,p50:18715,p60:20285.4,p70:22654.6,p80:24910.2,p90:30394.2}
];
var formatted=array.map(el=>({
姓名:el.name,
最小值:el.p20,
最大值:el.p90,
Q1:((el.p30+el.p40)/2),
Q2:((el.p70+el.p80)/2),
中值:((el.p50+el.p60)/2)
}));

console.log(格式化)@JoseHermosillaRodrigo:已经修复了!将原始代码转换为基于
map()
的代码时的一个简单错误。不过谢谢你指出。@Tex没问题!我看到你的编辑刚刚当我完成评论!现在看起来很好@CathalO'Donnell使用
map()
查看我的更正示例和Jose的更正示例。对于
循环,这绝对是我喜欢的方法。你怎么知道p20的值总是最低的,而p90的值总是最高的?@user2181397从他从
final[0]拉
min
这一事实看来很有可能
并试图从原始代码中每个对象的最后一个关键点,从他对如何计算
Q1
Q2
中值的解释中,以及从他的数据(似乎是某种统计数据集)中提取
max
。@JoseHermosillaRodrigo:已经修复了!将原始代码转换为基于
map()
的代码时的一个简单错误。不过谢谢你指出。@Tex没问题!我看到你的编辑刚刚当我完成评论!现在看起来很好@CathalO'Donnell使用
map()
查看我的更正示例和Jose的更正示例。对于
循环,这绝对是我喜欢的方法。你怎么知道p20的值总是最低的,而p90的值总是最高的?@user2181397从他从
final[0]拉
min
这一事实看来很有可能
并试图从原始代码中每个对象的最后一个关键点,从他对如何计算
Q1
Q2
中值的解释,以及从他的数据(似乎是某种统计数据集)中提取
max