You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.2 KiB

Array.prototype.clean = function(deleteValue) {
for (var i = 0; i < this.length; i++) {
if (this[i] == deleteValue) {
this.splice(i, 1);
i--;
}
}
return this;
};
/*
Array.findRanges
Turns this:
["a","a","a","b","b","c","c","c","c","c","a","a","c"]
into this:
{
"a":[
{
"from":0,
"to":2
},
{
"from":10,
"to":11
}
],
"b":[
{
"from":3,
"to":4
}
],
"c":[
{
"from":5,
"to":9
},
{
"from":12,
"to":12
}
]
}
*/
Array.prototype.findRanges = function() {
var buckets = {};
for(var i = 0; i < this.length; i++) {
if(!(this[i] in buckets)) {
buckets[this[i]] = [{
from: i,
to: i
}]
} else {
var last = buckets[this[i]][ buckets[this[i]].length-1 ];
if(i == last.to + 1) {
last.to = i;
} else {
buckets[this[i]].push({
from: i,
to: i
})
}
}
}
return buckets;
};
Object.values = function(obj){ return Object.keys(obj).map(function(key){return obj[key]}) };