Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Functionality: Assert if two arrays are equal
- function arraysEqual(a, b) {
- if (a === b) return true;
- if (a == null || b == null) throw new Error('Error: null array as an argument');
- if (a.length != b.length) throw new Error('Error: arrays of different length');
- for (var i = 0; i < a.length; ++i) {
- if (a[i] !== b[i]) throw new Error('Error: arrays are different');
- }
- return console.log("Passed!");
- }
- //Functionality: Flatten an array of arbitrarily nested arrays of integers into a flat array of integers
- function flatten (arr, initalArray) {
- //Set default value of initalArray to: []
- var initalArray = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
- return arr.reduce(function(prev,curr) {
- if (typeof curr === "object"){
- return flatten(curr,prev)
- }
- else {
- return prev.concat([curr]);
- }
- }, initalArray)
- }
- //Assert arrays. Given case
- arraysEqual(flatten([[1,2,[3]],4]), [1,2,3,4])
- //Assert arrays. Complex case of nested arrays
- arraysEqual(flatten([[1,2,[3],[4,[5]]],[[[6]]]]), [1,2,3,4,5,6])
- //Assert arrays. Empty arrays
- arraysEqual(flatten([]), [])
- //Assert arrays. Already as desired
- arraysEqual(flatten([1,2,3,4]), [1,2,3,4])
Add Comment
Please, Sign In to add comment