一起来刷Codewar(1):JavaScript向1:去掉最大最小值求和(去重)

最近在刷Codewar上面关于JavaSript的题目,觉得很有意思和经典的题目挑出来和大家一起讨论。==!

这里是一个一道关于数组求和的题目:

一起来刷Codewar(1):JavaScript向1:去掉最大最小值求和(去重)_第1张图片

大概意思是:
1.去掉最大值和最小值求和
2.对空数组,NULL或者只有一个数值的数组返回0;

问题解决要点:
1.数组的合法判断
这里要求的是空数组以及只有一个元素返回0;

if(array&&array.length){数组非空}
if(array.length>1){数组不止有一个元素}

2.去掉最大值最小值
这里我们要先进行排序,注意Array.sort()只能对string类型的元素进行排序,如果我们要对数值进行排序需要借用自定义函数。

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

3.求和
最后求和就很简单用一个for从下表1到length-1累加就可以。

最后附上完整代码:

function sumArray(array) {

  if(array&&array.length>1){
  
  array=array.sort(function(a,b) {return a - b;});
   var total = 0;
    for (var i = 1; i < array.length - 1; i++) {
      total += array[i];
    }
    return total;
  }else{return 0;}
}
  • 通常在求和时候要求去重 这个问题可以变成去掉最大值最小值去重后求和
    可以使用Array.indexOf()和Array.lastIndexOf()方法,判断是不是还有兄弟元素,并且使用辅助数组存储去重后的数组。
function sumArray(array) {

 if(array!= null && array != undefined && array.length > 1 &&array.lenth!=2){
  var result=0;
  var j=0;
  var sum=new Array();
  array.sort(compare);
  for(var i=1;i

这道题的原地址是:https://www.codewars.com/kata/sum-without-highest-and-lowest-number/train/javascript
大家感兴趣的话可以去试试 能用多种语言:
最后附上一个java版本:

import java.util.Arrays;
public class Kata
{
  public static int sum(int[] numbers)
  {
    if (numbers == null) return 0;
    if (numbers.length <= 2 ) return 0;
    Arrays.sort(numbers);
    int [] results = new int[numbers.length];
    
    int index = 0;
    results[0] = numbers[1];
    for (int i = 2; i < numbers.length-1; i++){
      if (results[index] != numbers[i]){
        results[++index] = numbers[i];
      }
    }
    
    int sum = 0;
    for(int i = 0; i < index+1; i++){
      sum += results[i];
    }
    
    return sum;
  }
}

你可能感兴趣的:(一起来刷Codewar(1):JavaScript向1:去掉最大最小值求和(去重))