1 | module.exports =
|
2 | remove: (val) ->
|
3 | if @contains val
|
4 | @splice @indexOf(val), 1
|
5 | return @
|
6 |
|
7 | removeIndex: (idx) ->
|
8 | if idx <= @length
|
9 | @splice idx, 1
|
10 | return @
|
11 |
|
12 | removeAll: (val) ->
|
13 | for x in @
|
14 | if x is val
|
15 | @removeIndex _i
|
16 | return @
|
17 |
|
18 | removeAllIgnoreCase: (val) ->
|
19 | for x in @
|
20 | if String(x).toLowerCase() is String(val).toLowerCase()
|
21 | @removeIndex _i
|
22 | return @
|
23 |
|
24 | clear: -> @length = 0; @
|
25 |
|
26 | clone: -> x for x in @
|
27 |
|
28 | merge: (val) ->
|
29 | for x in val
|
30 | @push x
|
31 | return @
|
32 |
|
33 | intersect: (val) -> x for x in @unique() when x in val
|
34 |
|
35 | contains: (val) -> @indexOf(val) > -1
|
36 |
|
37 | unique: -> x for x in @ when !_results.contains x
|
38 | compact: -> x for x in @ when x?
|
39 | flatten: ->
|
40 | array = []
|
41 | for x in @
|
42 | if x? and Object.isArray x
|
43 | array.merge x.flatten()
|
44 | else
|
45 | array.push x
|
46 | return array
|
47 |
|
48 | size: -> @length
|
49 | first: -> @[0]
|
50 | last:-> @[@length-1]
|
51 |
|
52 | for key of module.exports
|
53 | Object.defineProperty Array.prototype, key, value: module.exports[key]
|