将一维索引转换为二维索引



假设我的索引= 25,我想将其转换为具有五行七列的二维索引。我该怎么做?

到目前为止,我已经想出了:

var index = 25;
var row = 5;
var col = 7;
var twod_row = (index % row)-1 
var twod_col = (index % col)-1 

你能帮我弄清楚如何解决这个问题吗?

对于row,你可以使用除以cols的整数值,对于col,你可以使用余数值和cols

function getPosition(index, cols) {
return {
row: Math.floor(index / cols),
col: index % cols
};
}
console.log(getPosition(0, 7));
console.log(getPosition(1, 7));
console.log(getPosition(2, 7));
console.log(getPosition(7, 7));
console.log(getPosition(25, 7));
console.log(getPosition(34, 7));
.as-console-wrapper { max-height: 100% !important; top: 0; }

Y表示二维数组中行的索引,可以通过简单的除法获得。X表示"元素"应放置在该特定行上的索引。

我还添加了一个检查,以查看输入索引是否超过数组的大小。

const getNewValues = (idx, row = 5, col = 7) => {  
const Y = Math.floor(idx/ col); 
const X = idx % col;

if (Y > (row - 1)) {
return 'Index exceeds array size!';
}

return { X, Y }; 

}
console.log(getNewValues(0));
console.log(getNewValues(1));
console.log(getNewValues(25));
console.log(getNewValues(34));
console.log(getNewValues(50));

最新更新