isFalsy() and compact()

falsy + compact fiddle

by Anastasia Sharko

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.0.2/mocha.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.0.2/mocha.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.min.js"></script>
<div id="mocha">
</div>
<script>
  mocha.setup('bdd');
  var assert = chai.assert;
  var expect = chai.expect;
</script>
<script>

  describe("isFalsy", function() {
    before(function () {
      chai.config.includeStack = false;
    });
    describe('формат', function(){
      it("объявлена", function() {
        assert.isFunction(window.isFalsy, 'window.isFalsy');
      });
      it("принимает 1 аргумент", function() {
        assert.equal(isFalsy.length, 1);
      });
    });
    describe('проверки', function() {
    	it('обычное значение возвращает false', function() {
      	assert.isFalse(isFalsy('general value'))
      })
      it('false возвращает true', function() {
      	assert.isTrue(isFalsy('false'))
      })
      it('undefined возвращает true', function() {
				assert.isTrue(isFalsy('undefined'))
      })
      it('любое falsy значение возращает true', function() {
      	[
        	'0',
          '-0',
          '',
          'undefined',
          'null',
          'NaN',
          'false',
        ].forEach(function(value) {
        	assert.isTrue(isFalsy(value), `${value} должно возвращать true`)
        })
      })
      
    })
    
  });
  describe("compact", function() {
    before(function () {
      chai.config.includeStack = false;
    });
    describe('формат', function(){
      it("объявлена", function() {
        assert.isFunction(window.compact, 'window.compact');
      });
      it("принимает 1 аргумент", function() {
        assert.equal(compact.length, 1);
      });
    });
    describe('проверки', function() {
    	it('обычный массив без изменений', function() {
      	var array = ['1', '2', '3', ]
      	assert.deepEqual(compact(array), array)
      })
     ...

JavaScript

function isFalsy(value) {
        if (
        value === 'false' ||
        value === 'NaN' ||
        value === '0' ||
        value === '-0' ||
        value === '' ||
        value === 'undefined' ||
        value === 'null'

    ) return true


    return false
}

function compact(array) {
	    var result = []

    for (var i = 0; i < array.length; i++) {
        var element = array[i]
        if (!isFalsy(array[i])) {
            result.push(element)
        }
    }

    return result
}