Skip to content

Commit 935ef47

Browse files
committed
feat(every): Add every module
1 parent 273a165 commit 935ef47

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/recursion-practice/every/every.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const every = ([n1, ...rest], predicate) => {
2+
const n1Result = predicate(n1);
3+
4+
if (rest.length === 0) {
5+
return n1Result;
6+
}
7+
return n1Result && every([...rest], predicate);
8+
};
9+
10+
const everyPTC = ([n1, ...rest], predicate, resultSoFar = true) => {
11+
const newResultSoFar = resultSoFar && predicate(n1);
12+
if (rest.length === 0) {
13+
return newResultSoFar;
14+
}
15+
16+
return everyPTC([...rest], predicate, newResultSoFar);
17+
};
18+
19+
export { every, everyPTC };
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import each from 'jest-each';
2+
import { every, everyPTC } from './every';
3+
4+
[every, everyPTC].forEach(fn => {
5+
describe(`${fn.name}`, () => {
6+
each`
7+
arr | predicate | expected
8+
${[1, 2, 3]} | ${el => el < 7} | ${true}
9+
${[1, 2, 7]} | ${el => el < 7} | ${false}
10+
${[1, 2, 3]} | ${el => el % 2 === 0} | ${false}
11+
${[2, 4, 6]} | ${el => el % 2 === 0} | ${true}
12+
`.test(
13+
'should return $expected when called with $arr and $predicate',
14+
({ arr, predicate, expected }) => {
15+
expect(fn(arr, predicate)).toBe(expected);
16+
},
17+
);
18+
});
19+
});

0 commit comments

Comments
 (0)