Array Manipulation

by verashn

JavaScript

var ArrayOperator = (function() {
	var reverse = function (arr) {
  	var result = [];
    
    
    for (var i = arr.length - 1; i >= 0; i--) {
    	result.push(arr[i]);
    }
    return result;
  };
  
  var reverseInPlace = function (arr) {
  	var len = arr.length;
  	for (var i = 0; i < len/2; i++) {
    	var swapIndex = len-i-1,
      		first = arr[i],
      		last = arr[swapIndex];
      arr[i] = last;
      arr[swapIndex] = first;
    }
  	return arr;
  }
  
  var shiftOne = function (arr) {
  	var firstEl = arr[0],
    		result = arr.slice(1, arr.length);
    result.push(firstEl);
    return result;
  };
  
  var findPairs = function (arr, sum) {
  	var result = [];
    // include duplicates: use arr.length as max value for i
    for (var i = 0; i < Math.ceil(arr.length/2); i++) {
      for (var j = 0; j < arr.length; j++) {
      	// don't reuse the same index
        if (j != i) {
        	if (arr[i] + arr[j] === sum) {
          	result.push(arr[i] + "," + arr[j]);
          }
        }
      }
    }
    return result;
  };
  
  var removeDupes = function (arr) {
  	var result = [];
    for (var i = 0; i < arr.length; i++) {
    	// if value not already found in array
      if (result.indexOf(arr[i]) === -1) {
      	// add unique value
        result.push(arr[i]);
      }
    }
    return result;
  };
  
  return {
  	reverse: reverse,
    reverseInPlace: reverseInPlace,
    shiftOne: shiftOne,
    findPairs: findPairs,
    removeDupes: removeDupes
  };
}());

console.log(ArrayOperator.reverse([1,2,3,4,5,6,7]));
console.log(ArrayOperator.reverseInPlace([1,2,3,4,5,6,7]));
console.log(ArrayOperator.shiftOne([1,2,3,4,5,6,7]));
console.log(ArrayOperator.findPairs([1,2,3,4,5,6,7], 9));
console.log(ArrayOperator.removeDupes([1,2,2,3,3,3,4,5,6,7,6,5,4,3]));