add Ox.remove: sugar for array.splice(array.indexOf(element), 1)

This commit is contained in:
rolux 2013-05-25 14:24:39 +02:00
parent 03850ee600
commit 4b01e4984b

View file

@ -343,6 +343,41 @@ Ox.min = function(collection) {
return ret;
};
/*@
Ox.remove <f> Removes an element from an array or object and returns it
(collection, element) -> <*> Element, or undefined if not found
<script>
Ox.test.collection = [
['a', 'b', 'c'],
{a: 0, b: 1, c: 2}
];
</script>
> Ox.remove(Ox.test.collection[0], 'b')
'b'
> Ox.remove(Ox.test.collection[1], 1)
1
> Ox.remove(Ox.test.collection[1], 3)
void 0
> Ox.test.collection
[['a', 'c'], {a: 0, c: 2}]
@*/
Ox.remove = function(collection, element) {
var ret, key;
if (Ox.isArray(collection)) {
key = collection.indexOf(element);
if (key > -1) {
ret = collection.splice(key, 1)[0];
}
} else {
key = Ox.keyOf(collection, element);
if (key) {
ret = collection[key];
delete collection[key];
}
}
return ret;
};
/*@
Ox.reverse <f> Reverses an array or string
> Ox.reverse([1, 2, 3])