Guest User

Untitled

a guest
Feb 25th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. //Functionality: Assert if two arrays are equal
  2. function arraysEqual(a, b) {
  3. if (a === b) return true;
  4. if (a == null || b == null) throw new Error('Error: null array as an argument');
  5. if (a.length != b.length) throw new Error('Error: arrays of different length');
  6. for (var i = 0; i < a.length; ++i) {
  7. if (a[i] !== b[i]) throw new Error('Error: arrays are different');
  8. }
  9. return console.log("Passed!");
  10. }
  11.  
  12. //Functionality: Flatten an array of arbitrarily nested arrays of integers into a flat array of integers
  13. function flatten (arr, initalArray) {
  14. //Set default value of initalArray to: []
  15. var initalArray = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
  16. return arr.reduce(function(prev,curr) {
  17. if (typeof curr === "object"){
  18. return flatten(curr,prev)
  19. }
  20. else {
  21. return prev.concat([curr]);
  22. }
  23. }, initalArray)
  24. }
  25. //Assert arrays. Given case
  26. arraysEqual(flatten([[1,2,[3]],4]), [1,2,3,4])
  27.  
  28. //Assert arrays. Complex case of nested arrays
  29. arraysEqual(flatten([[1,2,[3],[4,[5]]],[[[6]]]]), [1,2,3,4,5,6])
  30.  
  31. //Assert arrays. Empty arrays
  32. arraysEqual(flatten([]), [])
  33.  
  34. //Assert arrays. Already as desired
  35. arraysEqual(flatten([1,2,3,4]), [1,2,3,4])
Add Comment
Please, Sign In to add comment