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.
 
 
 

113 lines
1.6 KiB

  1. Array.prototype.firstIndex = function (callback, thisArg) {
  2. let T = thisArg;
  3. let O = Object(this);
  4. let len = O.length >>> 0;
  5. let k = 0;
  6. while (k < len) {
  7. var kValue;
  8. if (k in O) {
  9. kValue = O[k];
  10. if (callback.call(T, kValue, k, O))
  11. return k;
  12. }
  13. k++;
  14. }
  15. return -1;
  16. };
  17. Array.prototype.spliceWhere = function (callback, thisArg) {
  18. let T = thisArg;
  19. let O = Object(this);
  20. let len = O.length >>> 0;
  21. let k = 0;
  22. while (k < len) {
  23. var kValue;
  24. if (k in O) {
  25. kValue = O[k];
  26. if (callback.call(T, kValue, k, O)) {
  27. O.splice(k, 1);
  28. k--;
  29. }
  30. }
  31. k++;
  32. }
  33. };
  34. Array.prototype.spliceFirstWhere = function (callback, thisArg) {
  35. let T = thisArg;
  36. let O = Object(this);
  37. let len = O.length >>> 0;
  38. let k = 0;
  39. while (k < len) {
  40. var kValue;
  41. if (k in O) {
  42. kValue = O[k];
  43. if (callback.call(T, kValue, k, O)) {
  44. O.splice(k, 1);
  45. return kValue;
  46. }
  47. }
  48. k++;
  49. }
  50. };
  51. window._ = {
  52. create: function () {
  53. let result = {};
  54. [].slice.call(arguments).forEach(function (a) {
  55. $.extend(true, result, a);
  56. });
  57. return result;
  58. },
  59. get2dArray: function (w, h, def) {
  60. def = def || 0;
  61. let result = [];
  62. for (let i = 0; i < w; i++) {
  63. let inner = [];
  64. for (let j = 0; j < h; j++) {
  65. if (def == 'array')
  66. inner.push([]);
  67. else
  68. inner.push(def);
  69. }
  70. result.push(inner);
  71. }
  72. return result;
  73. },
  74. randWeighted: function (weights) {
  75. let sample = [];
  76. weights.forEach(function (w, i) {
  77. for (let j = 0; j < w; j++)
  78. sample.push(i);
  79. });
  80. return sample[~~(Math.random() * sample.length)];
  81. }
  82. };
  83. define([
  84. ], function (
  85. ) {
  86. return window._;
  87. });