繁体   English   中英

将外部2D数组映射到另一个2D数组(javascript)

[英]Mapping an external 2d array to another 2d array (javascript)

旨在创建二维对象数组,使我可以通过bank [a] [b]访问任何对象(“片段”),其中[a]是“ bank”,[b]是a “夹”。 可以正常工作-不幸的是,此代码旨在查看某些外部文件并查看其属性。 这些文件已经根据其某些属性以“数组”的形式进行组织。 最初,我被告知这将是一个8x8的数组,但是现在事实证明这将是16x32的数组,并且要求指定了由数组中4x2选择组成的存储体。

换一种说法,

banks[0][0].track = 0
banks[0][0].slot = 0
banks[0][3].track = 3

banks[0][3].slot = 0
banks[0][4].track = 0
banks[0][4].slot = 1

banks[0][7].track = 3
banks[0][7].slot = 1
banks[15][0].track = 0

banks[15][0].slot = 31
banks[15][3].track = 3
banks[15][3].slot = 31

banks[16][0].track = 3
banks[16][0].slot = 0
banks[16][4].track = 3

banks[16][4].slot = 1
banks[63][0].track = 11
banks[63][0].slot = 30

banks[63][4].track = 11
banks[63][4].slot = 31

我需要迭代地创建一个64x8 2d的“片段”数组,但同时设置这些片段的上述属性,如图所示。 显然,相关的数学属于clip对象。 但是,我还看不到数学。 任何建议将不胜感激。

听起来您需要这样:

var theirBanks = [[...], [...], ...]; // 16*32 array of Clip objects

var x = 2; // reduce outer array to one of half length
var y = 4; // reduce inner arrays to one of fourth length
function reduce(sel) {
/* gets: a 2*4 selection of clips from theirBanks
returns: a new clip for banks */
   ... // not sure how you want this to be done
}

var banks = new Array(theirBanks.length / x);
for (var i=0; i<banks.length; i++) {
    banks[i] = [];
    for (var j=0; j<theirBanks.length/y; j++) {
        var selection = [];
        for (var k=i*x; k<(i+1)*x; k++)
            selection.push(theirBanks[k].slice(j*y, (j+1)*y));

        banks[i][j] = reduce(selection);
    }
}
// banks is now a 8*8 array

该脚本从(二维)数组构建2 * 4选择,使您可以将它们缩减为一个新对象并返回新的,较小的(二维)数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM