我有一个包含一组人信息的数组:姓名、当前状态、新点、最后一个事件点
例子:
var group = new Array();
group[0] = "John Doe,beginer,14,7";
group[1] = "Lois Lane,advanced,13,9";
group[2] = "Bruce Waine,advanced,17,10";
我需要一个计算新点平均值的函数。
对于前面的示例,平均值为 (14+13+17)/3 = 14.66666666666667
我有一个包含一组人信息的数组:姓名、当前状态、新点、最后一个事件点
例子:
var group = new Array();
group[0] = "John Doe,beginer,14,7";
group[1] = "Lois Lane,advanced,13,9";
group[2] = "Bruce Waine,advanced,17,10";
我需要一个计算新点平均值的函数。
对于前面的示例,平均值为 (14+13+17)/3 = 14.66666666666667
如果您将数组中的数据从字符串转换为对象,那会容易得多。这将在两个方面使您受益:1)代码将更具可读性、可理解性和更易于维护,以及 2)您不用做一堆串体操来拉出相关数据。
做这样的事情:
var group = [
{ name: 'John Doe', status: 'beginner', newPoints: 14, eventPoints: 7 },
{ name: 'Lois Lane', status: 'advanced', newPoints: 13, eventPoints: 9 },
{ name: 'Bruce Waine', status: 'advanced', newPoints: 17, eventPoints: 10 }
];
function getAverageNewPoints(people) {
var count = people.length || 0,
average = 0;
for (var i = 0; i < count; i++) {
average += people[i].newPoints;
}
return average / count;
}
alert('The average of new points in the group is: ' + getAverageNewPoints(group));
尝试以下操作:
function groupAverage(group) {
var sum = 0;
var count = group.length;
for (var i in group) {
sum += parseInt(group[i].split(',')[2], 10);
}
return sum / count;
}
在 处拆分字符串,并获取值并将它们转换为数字。
var group = new Array();
group[0] = "John Doe,beginer,14,7";
group[1] = "Lois Lane,advanced,13,9";
group[2] = "Bruce Waine,advanced,17,10";
sum=0;
for(var i in group)
{
sum=sum+Number(group[i].split(",")[2]);
}
console.log(sum/group.length);
你有一个糟糕的数据结构。你不想使用字符串。您也不应该使用Array
构造函数。从...开始:
var group = [
{name: "John Doe", rank: "beginner", points: 14, lastScore: 7},
{name: "Lois Lane", rank: "advanced", points: 13, lastScore: 9},
{name: "Bruce Wayne", rank: "advanced", points: 17, lastScore: 10},
],
length = group.length,
sum = 0,
i;
for ( i = 0; i < length; ++i) {
sum += group[i].points;
}
return sum / length; // Or do something else with the result.
// I did no error checking.
您可以使用对象构造函数代替Object
我使用的内联函数,但这并不是必需的。我只是好奇; 您是默认使用字符串,还是使用教科书作业的字符串接口部分?
哦,使用 not 的一个原因[]
是new Array()
,当您构造 时Array
,该值始终为真,而[]
为假。
我确实冒昧地更正了布鲁斯的姓氏。