Javascript中的方形矩阵转置
Square matrix transpose in Javascript
我试图在Javascript中创建方形矩阵转置函数,但它没有按预期工作。功能:
function transpose(){
var tmpCells = cells;
for(var i=0; i<boardHeight; i++){
for(var j=0; j<boardWidth; j++){
tmpCells[i][j] = cells[j][i];
}
}
cells = tmpCells;
clearCells();
drawCells();
}
产生奇怪的输出。它没有创建原始大小的新2D数组,而是漏掉了一些单元格,而不是objects
的数组,它创建了内部有circular bjects
的不同大小的数组。如何解决这个问题,我做错了什么?
JS fiddle链接:https://jsfiddle.net/Ls8jbho3/
因为tmpCells = cells
对现有对象进行新引用,而不是复制该对象,所以tmpCells[i][j] = cells[j][i]
与cells[i][j] = cells[j][i]
完全相同。这就是你所有问题的根源。
确保你的tmpCells
不与cells
共享结构,问题就会消失:
function transpose(){
var tmpCells = [];
for(var i=0; i<boardHeight; i++){
tmpCells[i] = [];
for(var j=0; j<boardWidth; j++){
tmpCells[i][j] = cells[j][i];
}
}
cells = tmpCells;
}
mathjs可以做到这一点。以下是示例:
var A = [[1, 2, 3], [4, 5, 6]];
math.transpose(A); // returns [[1, 4], [2, 5], [3, 6]]
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- 主干集合重置和解析
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 转置 JSON 数据
- 转置数组时收到“回调函数不支持此操作”错误
- 使用 setTimeout() 循环,使矩形变大,直到它到达画布边缘,然后重置
- 如何在 AppsScript 中拼合和转置数组
- 当按下后退键转到其他页面时,滚动条位置不会重置
- 如何转置/旋转多维数组
- 将列数据转置并复制到每一行
- 删除布局和用转置行绑定
- 如何使用 JavaScript 转置音乐和弦
- 我如何动态地填充一个转置HTML表与JQuery
- 当转置到PHP时,脚本不按预期工作
- 如何使用D3轴命令正确转置X轴和Y轴
- JS:将带有键的2D对象转换为转置的csv
- Javascript中的方形矩阵转置
- 使用undercore.js快速矩阵转置
- Asp.当通过浏览器后退按钮转到后退页面时,网络标签文本会重置
- 当跳转到下一页时,倒计时不应该被重置