UNPKG

many-dimansional-sparse-array

Version:

多维稀疏数组,一维数组存储方案,可能有维度扩展缺陷,可能有单元素复用缺陷

1 lines 2.02 kB
!function(t,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.ManyDimansionalSparseArray=r():t.ManyDimansionalSparseArray=r()}(this,(()=>(()=>{"use strict";var t={};return{492:function(t,r){var e=this&&this.__spreadArray||function(t,r,e){if(e||2===arguments.length)for(var n,a=0,i=r.length;a<i;a++)!n&&a in r||(n||(n=Array.prototype.slice.call(r,0,a)),n[a]=r[a]);return t.concat(n||Array.prototype.slice.call(r))};r.__esModule=!0;var n=function(){function t(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=this;this.baseNumberOfEveryDimansional=new Array,this.lengthOfAxis=t;var n=this.lengthOfAxis.reduceRight((function(t,r){return e.baseNumberOfEveryDimansional.unshift(t*r),e.baseNumberOfEveryDimansional[0]}),1);this.baseNumberOfEveryDimansional.shift(),this.baseNumberOfEveryDimansional.push(1),this.body=Array(n)}return t.prototype.get=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var e=this.calculateindexOfBody.apply(this,t);return this.body[e]},t.prototype.set=function(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];var n=this.calculateindexOfBody.apply(this,r);this.body[n]=t},t.prototype.calculateindexOfBody=function(){for(var t=this,r=[],e=0;e<arguments.length;e++)r[e]=arguments[e];return r.reduce((function(r,e,n){return r+e*t.baseNumberOfEveryDimansional[n]}),0)},t.prototype.forEach=function(t,r){var n=this;void 0===r&&(r=!1),r?this.forEachAll(t):this.body.forEach((function(r,a){t.apply(void 0,e([r],n.calculateIndexsOfManyDimansionalArray(a),!1))}))},t.prototype.forEachAll=function(t){for(var r=0;r<this.body.length;r++)t.apply(void 0,e([this.body[r]],this.calculateIndexsOfManyDimansionalArray(r),!1))},t.prototype.calculateIndexsOfManyDimansionalArray=function(t){var r=new Array;return this.baseNumberOfEveryDimansional.reduce((function(t,e){return r.push(Math.floor(t/e)),t%e}),t),r},t}();r.default=n}}[492](0,t),t.default})()));