You want to convert all elements in an array to some other form.
For example, you have
theUsers = [
{id: 1, username: 'john'}
{id: 2, username: 'lexy'}
{id: 3, username: 'pete'}
]
and you want to have an array of usernames only, i.e.
['john', 'lexy', 'pete']
.map
theUsernames = theUsers.map (user) -> user.username
theUsernames = (user.username for user in theUsers)
theUsers = [
{id: 1, username: 'john'}
{id: 2, username: 'lexy'}
{id: 3, username: 'pete'}
]
To retain only users whose id is greather than 2, use the following:
[{id: 3, username: 'pete'}]
.filter
filteredUsers = theUsers.filter (user) -> user.id >= 2
filteredUsers = (user for user in theUsers when user.id >= 2)
If you want to extract a subset of an array (i.e. numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
) you can easily do this with one of the following examples:
numbers[0..2]
will return [1, 2, 3]
numbers[3...-2]
will return [3, 4, 5, 6]
numbers[-2..]
will return [8, 9]
numbers[..]
will return [1, 2, 3, 4, 5, 6, 7, 8, 9]
With two dots (3..6), the range is inclusive [3, 4, 5, 6]
With three dots (3...6), the range excludes the end [3, 4, 5]
Adding a -
to the range will start the count at the end of the array
An omitted first index defaults to zero
An omitted second index defaults to the size of the array
The same syntax can be used with assignment to replace a segment of an array with new values
numbers[3..6] = [-3, -4, -5, -6]
The above row will replace the numbers array with the following : [1, 2, -3, -4, -5, -6, 7, 8, 9]
You want to combine arrays into one.
For example, you have
fruits = ['Broccoli', 'Carrots']
spices = ['Thyme', 'Cinnamon']
and you want to combine them into
ingredients = ['Broccoli', 'Carrots', 'Thyme', 'Cinnamon']
.concat
ingredients = fruits.concat spices
ingredients = [fruits..., spices...]
.concat
with indeterminate number of arraysIf the number of arrays can vary, e.g. you have array of arrays:
arrayOfArrays = [[1], [2,3], [4]]
[].concat.apply([], arrayOfArrays) # [1, 2, 3, 4]
You can do neat things via the results of Array "comprehensions"...
Like assign multiple variables... from the result of a looping for
statement...
[express,_] = (require x for x in ['express','underscore'])
Or a syntactically sweet version of a "mapped" function call, etc...
console.log (x.nme for x in [{nme:'Chad',rnk:99}, {nme:'Raul', rnk:9}])
[ 'Chad', 'Raul' ]
Notice the ( )
surrounding these statements. These parenthesis are required to make the enclosed comprehension "work".