-CL 2nd Round Clean - anand

by Matthew Vasallo

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<title>Jasmine Spec Runner</title>

JavaScript

//find the number closest to zero from a list of integers
//[2,5,9,1,10] =>1

describe('Closest to zero exercise', function () {
    it('expect one element in array and return the same element', function () {
        expect(closeToZero([2])).toEqual(2);
    });
    it('expect two elements in array and return the min element', function () {
        expect(closeToZero([3, 2], 0)).toEqual(2);
        expect(closeToZero([2, 2], 0)).toEqual(2);
        expect(closeToZero([2, 3], 0)).toEqual(2);
    });
    it('expect three elemets and return the number close to zero', function () {
        expect(closeToZero([2, 1, 5], 0)).toEqual(1);
        expect(closeToZero([5, 2, 1], 0)).toEqual(1);
        expect(closeToZero([1, 2, 5], 0)).toEqual(1);
    });
    it('expect four elements and return the number close to zero', function () {
        expect(closeToZero([2, 1, 5, 4], 0)).toEqual(1);
    });
    it('expect four elements and return the number close to zero', function () {
        expect(closeToZero([-1, 2, 5, 4], 0)).toEqual(-1);
    });
    it('expect four elements and return the number close to zero', function () {
        expect(closeToZero([-2, -3,1, 4], 0)).toEqual(1);
    });
    it('expects positive and negative numbers close to zero and return positive option', function () {
        expect(closeToZero([1, -1], 0)).toEqual(1);
    });
});

function closeToZero(elements, numToCompare) {
    if (elements.length == 1) {
        return elements[0];
    }
    var indexHolder = 0;
    var lIndexHolder = 0;
    var result = elements[indexHolder];
    for (var i = 1; i < elements.length; i++) {
        if (Math.abs(numToCompare - elements[i]) < Math.abs(numToCompare - elements[indexHolder])) {
            result = elements[i];
            
        }else if(Math.abs(numToCompare - elements[i]) === Math.abs(numToCompare - elements[indexHolder])) {
            result = elements[i];
            result = Math.abs(result);
        }
    }
    return result;
}
// load jasmine...