将一个外部二维数组映射到另一个二维数组(javascript)
Mapping an external 2d array to another 2d array (javascript)
这是为了创建一个对象的2d数组,允许我访问银行[a][b]中的任何对象("剪辑"),其中[a]是"银行",[b]是"剪辑"。很好地按原样工作,不幸的是,这段代码旨在查看一些外部文件并查看它们的属性。这些文件已经根据其某些属性组织在一个"数组"中。最初我被告知这将是一个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的"剪辑"数组,但同时设置这些剪辑的上述属性,如图所示。很明显,相关数学属于剪辑对象。然而,我还看不出数学。如有任何建议,我们将不胜感激。
听起来你需要这个:
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个选择,使您可以将它们缩减为一个新对象,并返回新的较小(二维)阵列。
相关文章:
- 作为一个二维数组,从ajax接收
- 创建P5.js二维数组
- 如何在Javascript中从select标记的一系列选项中构建二维数组
- inArray,indexOf在二维数组中
- 比较二维数组js
- 从二维数组中获取img src和img维度,并在body中显示
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- 如何将以下字符串拆分为二维数组:
- 更新Aurelia中二维数组的视图
- 如何在JavaScript中拆分二维数组
- 在二维数组中搜索比嵌套循环更有效的方法
- 无法访问javascript中二维数组中的第二个字段
- 将一个二维数组传递给javascript中的函数
- 无法在 Javascript 中访问我的二维数组
- 将二维数组转换为单个数组
- 将一个数组与javascript中的二维数组进行比较
- JavaScript二维数组
- 如何从二维数组中删除重复项
- 将一个外部二维数组映射到另一个二维数组(javascript)
- 二维数组映射在点自由符号