我们说我有索引= 25,我想将它转换为一个包含五行七列的二维索引。我怎么能这样做?
到目前为止,我想出了:
var index = 25;
var row = 5;
var col = 7;
var twod_row = (index % row)-1
var twod_col = (index % col)-1
你能帮我弄清楚如何解决这个问题吗?
答案 0 :(得分: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));
答案 1 :(得分:0)
对于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; }