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

时间:2017-08-09 07:22:44

标签: javascript

我们说我有索引= 25,我想将它转换为一个包含五行七列的二维索引。我怎么能这样做?

到目前为止,我想出了:

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

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

2 个答案:

答案 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; }