Javascript 求两个数组的平均值,然后从两个数组中取较大值
每当我运行它时,它都会给我“第一”而不是“第二”。我的逻辑正确吗?找到两个Avarage然后返回更大的?或者你认为它到底有什么问题Javascript 求两个数组的平均值,然后从两个数组中取较大值,javascript,Javascript,每当我运行它时,它都会给我“第一”而不是“第二”。我的逻辑正确吗?找到两个Avarage然后返回更大的?或者你认为它到底有什么问题 var first = ([100, 80], [100, 100]); function compare(a, b) { sum = 0; for(var i = 0; i < a.length; i++) { sum += first[i]; avg1 = (sum/a.length); } sum2 = 0; for
var first = ([100, 80], [100, 100]);
function compare(a, b) {
sum = 0;
for(var i = 0; i < a.length; i++) {
sum += first[i];
avg1 = (sum/a.length);
}
sum2 = 0;
for(i = 0; i < b.length; i++) {
sum2 += first[i];
avg2 = (sum2/b.length);
}
if (avg1 > avg2); {
return ("first");
}
if (false) {
return ("second");
}
}
var first=([100,80],[100,100]);
功能比较(a、b){
总和=0;
对于(变量i=0;iavg2){
报税表(“首次”);
}
if(false){
回报(“第二次”);
}
}
如果要获得a
和b
中元素的平均值,需要对这些元素求和,而不是先求中的元素的和
另外,您还有一个额外的代码>在if(avg1>avg2)
之后,它正在为该条件创建一个空主体,因此return“first”
被无条件执行
功能比较(a、b){
var总和=0;
对于(var i=0;i有一种更简单的方法来实现这一点
首先,看看如何在JavaScript中查找数字数组的平均值
var average = myArray.reduce(function(a, b) {
return a + b;
})/myArray.length;
您可以对两个数组执行此操作,并使用返回两个数组中较大的平均值。整个函数如下所示:
var greaterAverage = function (arr1, arr2) {
return Math.max( arr1.reduce(function(a, b) {
return a + b;
}) / arr1.length, arr2.reduce(function(a, b) {
return a + b;
}) / arr2.length );
}
如果要返回原始数组或类似“first”的内容,则只需比较平均值:
var greaterAverage = function (arr1, arr2) {
var avg1 = arr1.reduce(function(a, b) {
return a + b;
}) / arr1.length;
var avg2 = arr2.reduce(function(a, b) {
return a + b;
}) / arr2.length;
if (avg1 < avg2) {
return avg1; // or return "first";
} else if (avg1 > avg2) {
return avg2; // or return "second";
}
}
var greaterAverage=函数(arr1、arr2){
var avg1=arr1.reduce(函数a、b){
返回a+b;
})/arr1.1长度;
var avg2=arr2.reduce(函数a、b){
返回a+b;
})/2.2长度;
中频(avg1avg2){
返回avg2;//或返回“秒”;
}
}
一种更简单的方法是明确定义平均值
数组的平均值是其组成部分的总和除以其长度。我留下这个值是为了在0长度数组上抛出一个错误,因为根据数学,空数组的平均值是无意义的,但有些人会对此加以防范,并返回零
要对成分求和,请通过添加成员来减少数组
var First=[1,2,3],
第二个=[3,4,5];
函数平均值(A){
var-Total=A.reduce(函数(L,R){返回L+R;});
返回总长度/A.length;
}
window.alert((avg(First)>avg(Second))?“First”:“Second”);
首先,如果else语法错误,则您的语法错误。如果else语法错误
if (condition) {
block of code to be executed if the condition is true
} else {
block of code to be executed if the condition is false
}
范例
如果时间少于20:00,则创建“早安”问候语,否则为“晚上好”:
if(时间<20){
问候语=“你好”;
}否则{
问候语=“晚上好”;
}
输出:你好
使用更正的代码检查此JSFIDLE链接“我的逻辑在这里正确吗?”如果没有得到预期的结果,那么您的逻辑可能不正确。函数的参数是什么?为什么要在两个循环中求和相同的数组?编写var first=([100,80],[100100])有什么意义;
?逗号运算符返回其第二个参数,因此这相当于var first=([100100]);
定义了len
的位置?您发布的代码似乎不完整,因此我们无法运行它。if(false)
将永远不会执行它的主体。这可能是一个else
子句。我知道您主要复制了代码,但是:不要忘记局部变量,平均值的计算可以移到循环之外。谢谢,我没有注意到他遗漏了一些var
声明。
if (time < 20) {
greeting = "Good day";
} else {
greeting = "Good evening";
}