ced885d03f
* added grid * add table to textoutput * add all three outputs * add shortcuts * fix sound bug for triangle * fix triangle bug - again
47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
String.prototype.paddingLeft = function (paddingValue) {
|
|
return String(paddingValue + this).slice(-paddingValue.length);
|
|
};
|
|
|
|
function MergeObjRecursive(obj1, obj2) {
|
|
var obj3 = {};
|
|
for(p in obj1) {
|
|
obj3[p] = obj1[p];
|
|
}
|
|
for(p in obj2) {
|
|
if(Object.keys(obj3).indexOf(p)<0){
|
|
obj3[p] = obj2[p];
|
|
}
|
|
else {
|
|
obj3[p] = obj3[p] + obj2[p];
|
|
}
|
|
}
|
|
return obj3;
|
|
}
|
|
|
|
if(Array.prototype.equals)
|
|
// attach the .equals method to Array's prototype to call it on any array
|
|
Array.prototype.equals = function (array) {
|
|
// if the other array is a falsy value, return
|
|
if (!array)
|
|
return false;
|
|
|
|
// compare lengths - can save a lot of time
|
|
if (this.length != array.length)
|
|
return false;
|
|
|
|
for (var i = 0, l=this.length; i < l; i++) {
|
|
// Check if we have nested arrays
|
|
if (this[i] instanceof Array && array[i] instanceof Array) {
|
|
// recurse into the nested arrays
|
|
if (!this[i].equals(array[i]))
|
|
return false;
|
|
}
|
|
else if (this[i] != array[i]) {
|
|
// Warning - two different object instances will never be equal: {x:20} != {x:20}
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
// Hide method from for-in loops
|
|
Object.defineProperty(Array.prototype, "equals", {enumerable: false});
|