Mixin: ABM.util.array
Defined in: | src/util_array.coffee |
Included in: | ABM.Array ABM.Util.Array |
Overview
Array utility functions. Are added to ABM.Array.
TODO allow be used in user models through an ABM.noArray() function.
Method Summary
-
~
(void)
from(array, arrayType)
The static
ABM.Array.from
as a method. - ~ (void) toString(array) Return string representative of agentset.
- ~ (void) toFixed(array, precision = 2) Return an array of floating pt numbers as strings at given precision; useful for printing.
- ~ (void) any(array) Does the array have any elements? Is the array empty?
- ~ (void) empty(array) Checks for emptyness.
- ~ (void) clear(array) Clears the array.
- ~ (void) clone(array, begin = null, end = null) Make a copy of the array.
- ~ (void) first(array) Return first element of array.
- ~ (void) last(array) Return last element of array.
- ~ (void) select(array, condition) Return all elements of array that match condition.
- ~ (void) reject(array, condition) Return all elements of array that don't match condition.
- ~ (void) sample(array, options) Return random element of array or number random elements of array.
- ~ (void) contains(array, object) True if object is in array.
- ~ (void) remove(array, objects) Remove one or more objects from an array.
- ~ (void) removeItem(array, object) Removes a single object from an array.
- ~ (void) shuffle(array) Randomize the elements of this array.
- ~ (void) min(array, call = u.identityFunction, valueToo = false) Return object when call(object) min/max in array.
- ~ (void) max(array, call = u.identityFunction, valueToo = false) See min.
- ~ (void) sum(array, call = u.identityFunction) Sums up the contents of the array.
- ~ (void) average(array, call = u.identityFunction) Calculates the average of the array.
- ~ (void) median(array) Returns the median for the array.
- ~ (void) histogram(array, binSize = 1, call = u.identityFunction) Return histogram of o when f(o) is a numeric value in array.
- ~ (void) sort(array, call = null) Mutator.
- ~ (void) uniq(array) Mutator.
- ~ (void) flatten(array) Return a new array composed of the rows of a matrix.
- ~ (void) concat(array, addArray) Returns a new array that has addArray appended.
- ~ (void) normalize(array, low = 0, high = 1) Return an array with values in [low, high], defaults to [0, 1].
- ~ (void) normalizeInt(array, low, high)
- ~ (void) ask(array, call) Useful in console.
- ~ (void) with(array, functionString)
- ~ (void) getProperty(array, property) Property access, also useful for debugging.
- ~ (void) setProperty(array, property, value) Set the property of the agents to a given value.
- ~ (void) other(array, given) Return an array without given object.
Method Details
~
(void)
from(array, arrayType)
The static ABM.Array.from
as a method. Used by methods creating
new arrays.
~
(void)
toString(array)
Return string representative of agentset.
~
(void)
toFixed(array, precision = 2)
Return an array of floating pt numbers as strings at given precision; useful for printing.
~
(void)
any(array)
Does the array have any elements? Is the array empty?
~
(void)
empty(array)
Checks for emptyness.
~
(void)
clear(array)
Clears the array.
~
(void)
clone(array, begin = null, end = null)
Make a copy of the array. Needed when you don't want to modify the given array with mutator methods like sort, splice or your own functions. By giving begin/arguments, retrieve a subset of the array. Works with TypedArrays too.
~
(void)
first(array)
Return first element of array.
~
(void)
last(array)
Return last element of array.
~
(void)
select(array, condition)
Return all elements of array that match condition.
~
(void)
reject(array, condition)
Return all elements of array that don't match condition.
~
(void)
sample(array, options)
Return random element of array or number random elements of array.
Note: Objects are presumed unique, and the same object will never be included twice if more than one random object is requested.
Note: clone, shuffle then first number has poor performance.
Options: size: Size of the requested sample (defaults to one if null). condition: Function that elements should return true for elements.
~
(void)
contains(array, object)
True if object is in array.
~
(void)
remove(array, objects)
Remove one or more objects from an array. Error if an object not in array.
Error if object not in array.
~
(void)
removeItem(array, object)
Removes a single object from an array. Even if it is an array itself.
Error if object not in array.
~
(void)
shuffle(array)
Randomize the elements of this array.
~
(void)
min(array, call = u.identityFunction, valueToo = false)
Return object when call(object) min/max in array. Error if array empty. If f is a string, return element with max value of that property. If "valueToo" then return a 2-array of the element and the value; used for cases where f is costly function.
array = [{x: 1, y: 2}, {x: 3, y: 4}]
array.min()
# returns {x: 1, y: 2} 5
[min, dist2] = array.min(((o) -> o.x * o.x + o.y * o.y), true)
# returns {x: 3, y: 4}
~
(void)
max(array, call = u.identityFunction, valueToo = false)
See min.
~
(void)
sum(array, call = u.identityFunction)
Sums up the contents of the array.
~
(void)
average(array, call = u.identityFunction)
Calculates the average of the array.
~
(void)
median(array)
Returns the median for the array.
~
(void)
histogram(array, binSize = 1, call = u.identityFunction)
Return histogram of o when f(o) is a numeric value in array. Histogram interval is bin. Error if array empty. If call is a string, return histogram of that property.
In examples below, histogram returns [3, 1, 1, 0, 0, 1]
array = [1, 3, 4, 1, 1, 10]
histogram = histogram array, 2, (i) -> i
hash = ({id:i} for i in array)
histogram = histogram hash, 2, (o) -> o.id
histogram = histogram hash, 2, "id"
~
(void)
sort(array, call = null)
Mutator. Sort array of objects in place by the function f. If f is string, f returns property of object.
Returns array.
Clone first if you want to preserve the original array.
array = [{i: 1}, {i: 5}, {i: -1}, {i: 2}, {i: 2}]
sortBy array, "i"
# array now is [{i: -1}, {i: 1}, {i: 2}, {i: 2}, {i:5}]
~
(void)
uniq(array)
Mutator. Removes dups, by reference, in place from array. Note "by reference" means literally same object, not copy. Returns array. Clone first if you want to preserve the original array.
ids = ({id: i} for i in [0..10])
array = (ids[i] for i in [1, 3, 4, 1, 1, 10])
# array is [{id: 1}, {id: 3}, {id: 4}, {id: 1}, {id: 1}, {id: 10}]
arrayB = clone array
sortBy arrayB, "id"
# arrayB is [{id:1}, {id: 1}, {id: 1}, {id: 3}, {id: 4}, {id: 10}]
uniq arrayB
# arrayB now is [{id:1}, {id: 3}, {id: 4}, {id: 10}]
~
(void)
flatten(array)
Return a new array composed of the rows of a matrix.
array = [[1, 2, 3], [4, 5, 6]]
array.flatten()
# returns [1, 2, 3, 4, 5, 6]
~
(void)
concat(array, addArray)
Returns a new array that has addArray appended.
Concat checks [[ClassName]], and this does not work for things inheriting from Array.
~
(void)
normalize(array, low = 0, high = 1)
Return an array with values in [low, high], defaults to [0, 1]. Note: to have a half-open interval, [low, high), try high = high - .00009
~
(void)
normalizeInt(array, low, high)
~
(void)
ask(array, call)
Useful in console. Also see CoffeeConsole Chrome extension.
Similar to NetLogo ask & with operators. Use:
array.with((object) -> object.x < 5)
.ask((object) -> object.x = object.x + 1)
myModel.agents.with((object) -> object.id < 100)
.ask(object.color = u.color.red)
~
(void)
with(array, functionString)
~
(void)
getProperty(array, property)
Property access, also useful for debugging.
Return an array of a property of the BreedSet.
array.getProperty("x") # [1, 8, 6, 2, 2]
array.getProperty("x") # [2, 8, 6, 3, 3]
~
(void)
setProperty(array, property, value)
Set the property of the agents to a given value. If value is an array, its values will be used, indexed by agentSet's index. This is generally used via: getProperty, modify results, setProperty.
set.setProperty "x", 2
# {id: 4, x: 2, y: 3}, {id: 5, x: 2, y: 1}
~
(void)
other(array, given)
Return an array without given object.
as = AS.clone().other(AS[0])
as.getProperty "id" # [1, 2, 3, 4]