JavaScript返回最大元素(正面和负面检查)

时间:2018-01-19 14:11:57

标签: javascript

我已经阅读了很多,但我仍然无法弄清楚我做错了什么。

我需要创建一个检查数字列表并查看哪个数字最大的函数。它还应该包括负值,重复值和空数组。

这是发送这些“任务”的茉莉花任务:

describe('List', function() {
  'use strict';

  var list;

  beforeEach(function() {
    list = new List();
  });

  it('should find the largest element', function() {
    var data = [1, 100, 32, 453, 21, 5, 23, 12, 90];
    expect(list.findLargest(data)).toBe(453);
  });

  it('should cover negative values', function() {
    var data = [-1, -123, -2, -6, -10000, -10];
    expect(list.findLargest(data)).toBe(-1);
  });

  it('should cover duplicated values', function() {
    var data = [-1, -123, -1, -6, -10000, -1];
    expect(list.findLargest(data)).toBe(-1);
  });

  it('should cover all duplicated values', function() {
    var data = [3, 3, 3, 3, 3, 3, 3, 3, 3];
    expect(list.findLargest(data)).toBe(3);
  });

  it('should cover empty list', function() {
    expect(function() {
      list.findLargest([]); 
    }).toThrow('List cannot be empty.');
  });

});

这是我的尝试:

var List = function() {
  'use strict';

  function findLargest(list) {
    var largest = [];

    if( list[i] > 0){
      for (var i = 0; i < list.length; i++) {
        if (largest < list[i] ) {
            largest = list[i];
        }
    }
    console.log(largest);
    return 453; //First tried this, but it doesn't even go into this function
    //return largest; //Doesn't work
    }

    else if( list[i] < 0 ){
      console.log("negative");
      for (var i = 0; i < list.length; i++) {
        if (largest > list[i] ) {
            largest = list[i];
        }
      }
      console.log(largest);
      return largest;
    }

    // else {
    //    throw("List cannot be empty.");
    // }

  }

  return {
    findLargest: findLargest
  };
};

这是我得到的错误: https://imgur.com/a/MZ0Xk

如果我取消评论我的else,我会得到:

List cannot be empty. thrown

好像没有进入这个功能。我看不出问题,我要JavaScript抱歉。

1 个答案:

答案 0 :(得分:0)

您可以使用基本数学函数为您执行此操作。无需单独的功能。

const highest = Math.max.apply( null, [1, 100, 32, 453, 21, 5, 23, 12, 90] ); // 453

const lowest = Math.min.apply( null, [-1, -123, -2, -6, -10000, -10] ); // -10000