"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;