Skip to content

Commit 45c56b0

Browse files
committed
allow 0 in pushUnique
so we can use it to make index arrays
1 parent aab4f11 commit 45c56b0

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

src/lib/push_unique.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
/**
1212
* Push array with unique items
1313
*
14+
* Ignores falsy items, except 0 so we can use it to construct arrays of indices.
15+
*
1416
* @param {array} array
1517
* array to be filled
1618
* @param {any} item
@@ -30,7 +32,7 @@ module.exports = function pushUnique(array, item) {
3032
}
3133
array.push(item);
3234
}
33-
else if(item && array.indexOf(item) === -1) array.push(item);
35+
else if((item || item === 0) && array.indexOf(item) === -1) array.push(item);
3436

3537
return array;
3638
};

test/jasmine/tests/lib_test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1292,21 +1292,21 @@ describe('Test lib.js:', function() {
12921292
expect(this.array).toBe(out);
12931293
});
12941294

1295-
it('should ignore falsy items', function() {
1295+
it('should ignore falsy items except 0', function() {
12961296
Lib.pushUnique(this.array, false);
12971297
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }]);
12981298

12991299
Lib.pushUnique(this.array, undefined);
13001300
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }]);
13011301

1302-
Lib.pushUnique(this.array, 0);
1303-
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }]);
1304-
13051302
Lib.pushUnique(this.array, null);
13061303
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }]);
13071304

13081305
Lib.pushUnique(this.array, '');
13091306
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }]);
1307+
1308+
Lib.pushUnique(this.array, 0);
1309+
expect(this.array).toEqual(['a', 'b', 'c', { a: 'A' }, 0]);
13101310
});
13111311

13121312
it('should ignore item already in array', function() {

0 commit comments

Comments
 (0)