Javascript-具有对象属性的计算

Javascript-具有对象属性的计算,javascript,arrays,object,Javascript,Arrays,Object,我当前正在尝试计算对象中属性的增长百分比变化。我有一个能够成功处理整数数组的计算,但我很难将相同的逻辑应用于对象的属性 我的预期结果是对数据执行类似于以下内容的计算:2011-2010年/2010年;2012年-2011年/201年1等。。在这样的数组中: calculationData = [14.9274 , -0.1875, 0.6122] 以下是手动解决此问题的示例: let calc2010 = data.year2011 - data.year2010 / data.year201

我当前正在尝试计算对象中属性的增长百分比变化。我有一个能够成功处理整数数组的计算,但我很难将相同的逻辑应用于对象的属性

我的预期结果是对
数据执行类似于以下内容的计算:
2011-2010年/2010年;2012年-2011年/201年
1等。。在这样的数组中:

calculationData = [14.9274 , -0.1875, 0.6122]
以下是手动解决此问题的示例:

let calc2010 = data.year2011 - data.year2010 / data.year2010
let calc2011 = data.year2011 - data.year2012 / data.year2011

calculationData.push(calc2010, calc2011)

我怎样才能做到这一点

在下面的代码片段中;我提供了两个示例,第一个是我试图计算的对象的属性,第二个是显示整数数组的计算

const data=[{'year2010':4323,'year2011':64532,'year2012':52432,'year2013':84532,'year2014':63232,'year2015':49332}]
让calculationData=data.map(函数(stPer,i){
返回100*(stPer-data[i-1])/(data[i-1]);
});
console.log(calculationData)
常数dataArr=[[312]、[4342]、[4343]]
让calculationDataTwo=dataArr.map(函数(stPer,i){
返回100*(stPer-dataArr[i-1])/(dataArr[i-1]);
});

log(calculationDataTwo)
您需要将每年放在不同的数组元素中,而不是将所有年份放在同一个对象中

使用
map
时,需要从数组索引
1
开始,因为索引
0
之前没有可比较的元素。可以通过在切片上映射来实现这一点

const数据=[{
年份:2010年,
价值:4323
},
{
年份:2011年,
价值:64532
},
{
年份:2012年,
价值:52432
},
{
年份:2013年,
价值:84532
},
{
年份:2014年,
数值:63232
}, 
{
年份:2015年,
价值:49332
}
]
让calculationData=data.slice(1.map)(函数(stPer,i){
返回100*(stPer.value-data[i].value)/data[i].value;
});

console.log(calculationData)
这里有一个解决方案,它将对象按年份升序转换为数据数组

const data = {'year2010': 4323, 'year2011': 64532, 'year2012': 52432, 'year2013': 84532, 'year2014': 63232, 'year2015': 49332 };


const calculationData = Object.entries(data).sort(([year1], [year2]) => {
    return Number(year1.slice(4)) - Number(year2.slice(4));
}).map(([year, value]) => value);
这是使用Object.entries函数创建一个数组,看起来像:[[year2010',4323],[year2011',64532]等等

接下来,我们可以轻松地对其进行排序和映射。如果您保证数据已预排序,则可能不需要排序,在这种情况下,您只需要使用map

结果是这样一个数组:[432364532528453263232,49332]

您应该能够将其插入到现有代码中


编辑:我看到在你达到这一点后,还有一些额外的处理要做。在这一点之后您需要任何帮助吗?

输入数据的预期输出是什么?
?刚刚更新的帖子,但我希望输出以计算结果数组的形式返回,即代码段
数据中的第二个console.log只有一个元素。您希望
data[i-1]
引用什么?您有
const data=[{…}]但是这样你必须继续写
数据[0]
;使用
Object.entries(数据[0])
,您将a)摆脱
[0]
,b)处理数组
const data = {'year2010': 4323, 'year2011': 64532, 'year2012': 52432, 'year2013': 84532, 'year2014': 63232, 'year2015': 49332 };


const calculationData = Object.entries(data).sort(([year1], [year2]) => {
    return Number(year1.slice(4)) - Number(year2.slice(4));
}).map(([year, value]) => value);