Also the testing for isSorted is a lot more robust now.
This commit is contained in:
Angelos Chalaris
2018-03-09 20:23:10 +02:00
parent 598a4623a7
commit 66d4d54895
6 changed files with 1076 additions and 1085 deletions

View File

@ -8,10 +8,12 @@ Return `0` if the `direction` changes or the `direction` if the last element is
```js
const isSorted = arr => {
const direction = arr[0] > arr[1] ? -1 : 1;
for (let [i, val] of arr.entries())
if (i === arr.length - 1) return direction;
let direction = -(arr[0] - arr[1]);
for (let [i, val] of arr.entries()) {
direction = !direction ? -(arr[i - 1] - arr[i]) : direction;
if (i === arr.length - 1) return !direction ? 0 : direction;
else if ((val - arr[i + 1]) * direction > 0) return 0;
}
};
```

View File

@ -1,5 +1,3 @@
const flatten = (arr, depth = 1) =>
depth !== 1
? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), [])
: arr.reduce((a, v) => a.concat(v), []);
arr.reduce((a, v) => a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v), []);
module.exports = flatten;

View File

@ -1,7 +1,9 @@
const isSorted = arr => {
const direction = arr[0] > arr[1] ? -1 : 1;
for (let [i, val] of arr.entries())
if (i === arr.length - 1) return direction;
let direction = -(arr[0] - arr[1]);
for (let [i, val] of arr.entries()) {
direction = !direction ? -(arr[i - 1] - arr[i]) : direction;
if (i === arr.length - 1) return !direction ? 0 : direction;
else if ((val - arr[i + 1]) * direction > 0) return 0;
}
};
module.exports = isSorted;

View File

@ -6,9 +6,17 @@ test('Testing isSorted', (t) => {
//Please go to https://github.com/substack/tape
t.true(typeof isSorted === 'function', 'isSorted is a Function');
//t.deepEqual(isSorted(args..), 'Expected');
t.equal(isSorted([0, 1, 2]), 1, 'Array is sorted in ascending order');
t.equal(isSorted([0, 1, 2, 2]), 1, 'Array is sorted in ascending order');
t.equal(isSorted([4, 3, 2]), -1, 'Array is sorted in descending order');
t.equal(isSorted([4, 3, 5]), 0, 'Array is not sorted, direction changed in array');
t.equal(isSorted([-4, -3, -2]), 1, 'Array is sorted in ascending order');
t.equal(isSorted([0, 0, 1, 2]), 1, 'Array is sorted in ascending order');
t.equal(isSorted([2, 1, 0]), -1, 'Array is sorted in descending order');
t.equal(isSorted([2, 2, 1, 0]), -1, 'Array is sorted in descending order');
t.equal(isSorted([-2, -3, -4]), -1, 'Array is sorted in descending order');
t.equal(isSorted([2, 1, 0, 0]), -1, 'Array is sorted in descending order');
t.equal(isSorted([]), undefined, 'Array is empty');
t.equal(isSorted([1]), 0, 'Array is not sorted, direction changed in array');
t.equal(isSorted([1, 2, 1]), 0, 'Array is not sorted, direction changed in array');
//t.false(isSorted(args..), 'Expected');
//t.throws(isSorted(args..), 'Expected');
t.end();

View File

@ -5,8 +5,8 @@ test('Testing pad', (t) => {
//For more information on all the methods supported by tape
//Please go to https://github.com/substack/tape
t.true(typeof pad === 'function', 'pad is a Function');
t.equal(pad('cat'), ' cat ', 'cat is padded on both sides');
t.equal(pad('cat').length, 8, 'length of string is 8');
t.equal(pad('cat',8), ' cat ', 'cat is padded on both sides');
t.equal(pad('cat',8).length, 8, 'length of string is 8');
t.equal(pad(String(42), 6, '0'), '004200', 'pads 42 with "0"');
t.equal(pad('foobar', 3), 'foobar', 'does not truncates if string exceeds length');
t.end();

File diff suppressed because it is too large Load Diff