在数组上循环,找到最大的数字,并查看是否所有其他数字在javascript中都等于它

在数组上循环,找到最大的数字,并查看是否所有其他数字在javascript中都等于它,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个数组,我在其中循环,找到最大的数字,然后取数组中所有其他数字的总和,看看它是否等于最大的数字。我使用了两个for循环来实现这一点。我试图找出如何做到这一点,只有一个循环,我似乎不能想出它。请你给我提些建议好吗 var myArray = [4, 6, 24, 10, 1, 3]; var arrayAddition = function (arr) { var largestNumber = arr[0]; var sumTotal = 0; for (var

我有一个数组,我在其中循环,找到最大的数字,然后取数组中所有其他数字的总和,看看它是否等于最大的数字。我使用了两个for循环来实现这一点。我试图找出如何做到这一点,只有一个循环,我似乎不能想出它。请你给我提些建议好吗

var myArray = [4, 6, 24, 10, 1, 3];

var arrayAddition = function (arr) {
    var largestNumber = arr[0];
    var sumTotal = 0;
    for (var i = 0; i < arr.length; i += 1) {
        if (arr[i] > largestNumber) {
            largestNumber = arr[i];
        }
    }
    for (var i = 0; i < arr.length; i += 1) {
        if (arr[i] != largestNumber) {
            sumTotal += arr[i]; 
        }
    }
    if (largestNumber === sumTotal) {
        return 'The result is true because the sumTotal is ' + sumTotal + ' and the largestNumber is ' + largestNumber;
    } else {
        return 'Wrong, the sumtotal is ' + sumTotal + ' and the the largestNumber is ' + largestNumber;
    }
};
var myArray=[4,6,24,10,1,3];
var arrayAddition=函数(arr){
var largestNumber=arr[0];
var sumTotal=0;
对于(变量i=0;i最大数量){
最大数量=arr[i];
}
}
对于(变量i=0;i
所以我要做的是对数组进行数字排序。然后将除最后一个之外的所有值相加

var myArray = [4, 6, 24, 10, 1, 3];

myArray.sort(function(a,b){return a-b});

var arrayAddition = function (arr) {
    var largestNumber = arr[arr.length-1];  // get last element; it's the biggest
    var sumTotal = 0;

    for (var i = 0; i < arr.length-1; i += 1) {
        sumTotal += arr[i]; 
    }
    if (largestNumber === sumTotal) {
        return 'The result is true because the sumTotal is ' + sumTotal + ' and the largestNumber is ' + largestNumber;
    } else {
        return 'Wrong, the sumtotal is ' + sumTotal + ' and the the largestNumber is ' + largestNumber;
    }
};
var myArray=[4,6,24,10,1,3];
sort(函数(a,b){返回a-b});
var arrayAddition=函数(arr){
var largestNumber=arr[arr.length-1];//获取最后一个元素;它是最大的
var sumTotal=0;
对于(变量i=0;i
所以我要做的是对数组进行数字排序。然后将除最后一个之外的所有值相加

var myArray = [4, 6, 24, 10, 1, 3];

myArray.sort(function(a,b){return a-b});

var arrayAddition = function (arr) {
    var largestNumber = arr[arr.length-1];  // get last element; it's the biggest
    var sumTotal = 0;

    for (var i = 0; i < arr.length-1; i += 1) {
        sumTotal += arr[i]; 
    }
    if (largestNumber === sumTotal) {
        return 'The result is true because the sumTotal is ' + sumTotal + ' and the largestNumber is ' + largestNumber;
    } else {
        return 'Wrong, the sumtotal is ' + sumTotal + ' and the the largestNumber is ' + largestNumber;
    }
};
var myArray=[4,6,24,10,1,3];
sort(函数(a,b){返回a-b});
var arrayAddition=函数(arr){
var largestNumber=arr[arr.length-1];//获取最后一个元素;它是最大的
var sumTotal=0;
对于(变量i=0;i
基本思想 你可以把所有的数字相加,最后减去最大的一个

for (var i = 0; i < arr.length; i += 1) {
    if (arr[i] > largestNumber) {
        largestNumber = arr[i];
    }

    sumTotal += arr[i];
}

// now because the sumTotal includes the largestNumberAlso
// to get the same result as in your code, you have to

sumTotal -= largestNumber
for(变量i=0;i最大数量){
最大数量=arr[i];
}
sumTotal+=arr[i];
}
//现在因为总和包括了最大的数字所以
//要获得与代码中相同的结果,必须
总和-=最大数
全部代码
var myArray=[4,6,24,10,1,3];
var arrayAddition=函数(arr){
var largestNumber=arr[0];
var sumTotal=0;
对于(变量i=0;i最大数量){
最大数量=arr[i];
}
sumTotal+=arr[i];
}
总和-=最大数量;
如果(最大数量===总和){
返回“结果为真,因为sumTotal为“+sumTotal+”,最大的数字为“+largestNumber”;
}否则{
返回“错误”,总和为“+sumtotal+”,最大的数字为“+largestNumber”;
}
};
一些小的改进 还有一个改进可以使代码稍微快一点

而不是像这样做循环

for( var i = 0; i < arr.length; i += 1 ) { ... }
for( var i = 0, len = arr.length; i < len; i++ ) { ... }
(变量i=0;i 你可以这样写

for( var i = 0; i < arr.length; i += 1 ) { ... }
for( var i = 0, len = arr.length; i < len; i++ ) { ... }
for(var i=0,len=arr.length;i
这样可以节省一些处理器周期,因为不需要每次都查找length属性

其他一些时髦的改进
var myArray=[4,6,24,10,1,3];
var arrayAddition=函数(arr){
var largestNumber=arr[0];//可以满足以下等式
var sumTotal=0;
对于(变量i=0,len=arr.length;isumTotal){
最大数量=arr[i];
}
sumTotal+=arr[i];
}
总和-=最大数量;
如果(最大数量===总和){
返回“结果为真,因为sumTotal为“+sumTotal+”,最大的数字为“+largestNumber”;
}否则{
返回“错误”,总和为“+sumtotal+”,最大的数字为“+largestNumber”;
}
};
基本思想 你可以把所有的数字相加,最后减去最大的一个

for (var i = 0; i < arr.length; i += 1) {
    if (arr[i] > largestNumber) {
        largestNumber = arr[i];
    }

    sumTotal += arr[i];
}

// now because the sumTotal includes the largestNumberAlso
// to get the same result as in your code, you have to

sumTotal -= largestNumber
for(变量i=0;i最大数量){
最大数量=arr[i];
}
sumTotal+=arr[i];
}
//现在因为总和包括了最大的数字所以
//要获得与代码中相同的结果,必须
总和-=最大数
全部代码
var myArray=[4,6,24,10,1,3];
var arrayAddition=函数(arr){
var largestNumber=arr[0];
var sumTotal=0;
对于(变量i=0;i最大数量){
最大数量=arr[i];
}
sumTotal+=arr[i];
}
总和-=最大数量;
如果(最大数量===总和){
返回“结果为真,因为sumTotal为“+sumTotal+”,最大的数字为“+largestNumber”;
}否则{
return'错误,sumtotal是'+sumtotal+'a
var max = Math.max.apply(null, arr);
var min = Math.min.apply(null, arr);
var sum = arr.filter(function (el) {
  return el != max;
}).reduce(function (p, c) {
  return p + c;
});