109 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
/* Array utilities. */
 | 
						|
var arrays = {
 | 
						|
  range: function(start, stop) {
 | 
						|
    var length = stop - start,
 | 
						|
        result = new Array(length),
 | 
						|
        i, j;
 | 
						|
 | 
						|
    for (i = 0, j = start; i < length; i++, j++) {
 | 
						|
      result[i] = j;
 | 
						|
    }
 | 
						|
 | 
						|
    return result;
 | 
						|
  },
 | 
						|
 | 
						|
  find: function(array, valueOrPredicate) {
 | 
						|
    var length = array.length, i;
 | 
						|
 | 
						|
    if (typeof valueOrPredicate === "function") {
 | 
						|
      for (i = 0; i < length; i++) {
 | 
						|
        if (valueOrPredicate(array[i])) {
 | 
						|
          return array[i];
 | 
						|
        }
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      for (i = 0; i < length; i++) {
 | 
						|
        if (array[i] === valueOrPredicate) {
 | 
						|
          return array[i];
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
  },
 | 
						|
 | 
						|
  indexOf: function(array, valueOrPredicate) {
 | 
						|
    var length = array.length, i;
 | 
						|
 | 
						|
    if (typeof valueOrPredicate === "function") {
 | 
						|
      for (i = 0; i < length; i++) {
 | 
						|
        if (valueOrPredicate(array[i])) {
 | 
						|
          return i;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      for (i = 0; i < length; i++) {
 | 
						|
        if (array[i] === valueOrPredicate) {
 | 
						|
          return i;
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return -1;
 | 
						|
  },
 | 
						|
 | 
						|
  contains: function(array, valueOrPredicate) {
 | 
						|
    return arrays.indexOf(array, valueOrPredicate) !== -1;
 | 
						|
  },
 | 
						|
 | 
						|
  each: function(array, iterator) {
 | 
						|
    var length = array.length, i;
 | 
						|
 | 
						|
    for (i = 0; i < length; i++) {
 | 
						|
      iterator(array[i], i);
 | 
						|
    }
 | 
						|
  },
 | 
						|
 | 
						|
  map: function(array, iterator) {
 | 
						|
    var length = array.length,
 | 
						|
        result = new Array(length),
 | 
						|
        i;
 | 
						|
 | 
						|
    for (i = 0; i < length; i++) {
 | 
						|
      result[i] = iterator(array[i], i);
 | 
						|
    }
 | 
						|
 | 
						|
    return result;
 | 
						|
  },
 | 
						|
 | 
						|
  pluck: function(array, key) {
 | 
						|
    return arrays.map(array, function (e) { return e[key]; });
 | 
						|
  },
 | 
						|
 | 
						|
  every: function(array, predicate) {
 | 
						|
    var length = array.length, i;
 | 
						|
 | 
						|
    for (i = 0; i < length; i++) {
 | 
						|
      if (!predicate(array[i])) {
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return true;
 | 
						|
  },
 | 
						|
 | 
						|
  some: function(array, predicate) {
 | 
						|
    var length = array.length, i;
 | 
						|
 | 
						|
    for (i = 0; i < length; i++) {
 | 
						|
      if (predicate(array[i])) {
 | 
						|
        return true;
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
module.exports = arrays;
 |