首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将外部二维数组映射到另一二维数组(javascript)

将外部二维数组映射到另一二维数组(javascript)
EN

Stack Overflow用户
提问于 2012-07-09 01:14:38
回答 1查看 129关注 0票数 0

This的目的是创建一个对象的二维数组,允许我访问banksa的任何对象(“剪辑”),其中a是“银行”,b是“剪辑”。按原样工作得很好,不幸的是,这段代码的目的是查看一些外部文件和它们的属性。这些文件已经根据它们的一些属性组织成了一个“数组”。最初我被告知这将是一个8x8的数组,但现在结果是这将是一个16x32的数组,并且要求指定由数组中的4x2选择组成的存储体。

换句话说,

代码语言:javascript
复制
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

我需要迭代地创建一个64x82d的“剪辑”数组,但同时设置这些剪辑的上述属性,如下所示。显然,相关的数学运算属于clip对象。然而,我还看不到数学。任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-07-09 01:49:52

听起来你需要这个:

代码语言:javascript
复制
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个选择,允许您将它们缩减为一个新对象,并返回新的较小的(二维)数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11385039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档