我有一个如下所示的 json 对象:
{
"critiquesAvg": 4.75: ,
"critiques":[
{
'author': 'John Does',
'comment': "I like it",
'stars' : 5
},
{
'author': 'Jacob Works',
'comment': "I like it too",
'stars' : 4.5
}
]
}
我需要通过平均 critiques 数组的 stars
属性值来动态计算 critiquesAvg
的值 (4.75)。
有人可以帮我吗?
编辑: 抱歉,我遇到的实际问题如下:
var dealers = [{
"id", 1874
"critiquesAvg": 4.75 ,
"critiques":[
{
'author': 'John Does',
'comment': "I like it",
'stars' : 5
},
{
'author': 'Jacob Works',
'comment': "I like it too",
'stars' : 4.5
}
]
},
{
"id": 1345,
"critiquesAvg": 5 ,
"critiques":[
{
'author': 'John Does',
'comment': "I like it",
'stars' : 5
},
{
'author': 'Jacob Works',
'comment': "I like it too",
'stars' : 5
}
]
}
];
在这里,我想根据特定经销商数据的平均评论数动态计算 critiquesAvg
属性的值。
最佳答案
var data = {
"critiquesAvg": 4.75,
"critiques":[
{
'author': 'John Does',
'comment': "I like it",
'stars' : 5
},
{
'author': 'Jacob Works',
'comment': "I like it too",
'stars' : 4.5
}
]
};
var sum = data.critiques.reduce(function(x, y) { return x.stars + y.stars });
var average = sum / data.critiques.length;
data.critiquesAvg = average;
至于更新的问题,您需要添加一个额外的循环,例如使用 forEach
(更新 fiddle here ):
dealers.forEach(function(data) {
var sum = data.critiques.reduce(function(x, y) { return x.stars + y.stars });
var average = sum / data.critiques.length;
data.critiquesAvg = average;
});
关于javascript - 动态生成json属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480585/