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 | replaceIndex: (idx, val) ->
|
25 | if idx <= @length
|
26 | @splice idx, 1, val
|
27 | return @
|
28 |
|
29 | replace: (val, newval) ->
|
30 | if @contains val
|
31 | @splice @indexOf(val), 1, newval
|
32 | return @
|
33 |
|
34 | replaceAll: (val, newval) ->
|
35 | for x in @
|
36 | if x is val
|
37 | @replaceIndex _i, newval
|
38 | return @
|
39 |
|
40 | clear: -> @length = 0; @
|
41 |
|
42 | clone: -> x for x in @
|
43 |
|
44 | merge: (val) ->
|
45 | for x in val
|
46 | @push x
|
47 | return @
|
48 |
|
49 | intersect: (val) -> x for x in @unique() when x in val
|
50 |
|
51 | contains: (val) -> @indexOf(val) > -1
|
52 |
|
53 | unique: -> x for x in @ when !_results.contains x
|
54 | compact: -> x for x in @ when x?
|
55 | flatten: ->
|
56 | array = []
|
57 | for x in @
|
58 | if x? and Object.isArray x
|
59 | array.merge x.flatten()
|
60 | else
|
61 | array.push x
|
62 | return array
|
63 |
|
64 | size: -> @length
|
65 | first: -> @[0]
|
66 | last:-> @[@length-1]
|
67 |
|
68 | for key of module.exports
|
69 | Object.defineProperty Array.prototype, key, value: module.exports[key]
|