JavaScript-如何在显示为正方形/矩阵的元素线性数组中按键查找元素的x、y位置?

JavaScript-如何在显示为正方形/矩阵的元素线性数组中按键查找元素的x、y位置?,javascript,arrays,math,matrix,formula,Javascript,Arrays,Math,Matrix,Formula,我有一组值: var array = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p']; 直观地表示为矩阵: a b c d e f g h i j k l m n o p 我想做什么-如果给我这个数组的任何键和数组的长度,计算行和列值[x,y] 0(a)of16(数组长度)将是[0,0] 16的6(g)(数组长度)将是[1,2] 16的13(n)(数组长度)将是[3,1] 等等 我

我有一组值:

var array = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'];
直观地表示为矩阵:

a  b  c  d
e  f  g  h
i  j  k  l
m  n  o  p
我想做什么-如果给我这个数组的任何键和数组的长度,计算行和列值
[x,y]

  • 0
    (a)of
    16
    (数组长度)将是
    [0,0]
  • 16的
    6
    (g)(数组长度)将是
    [1,2]
  • 16的
    13(n)(数组长度)将是
    [3,1]
  • 等等
我正在迭代
for(I=0;I
循环中的数组值,以将它们显示为容器中的平铺。我可以内联计算每个值在该循环中的
[x,y]
位置,或者使用函数来计算,这并不重要

我被卡住了

var数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'];
var size=100/Math.sqrt(array.length);
对于(var i=0;i
预先计算宽度(或高度),然后使用
i%width
Math.floor(i/width)
计算当前的
x
y
位置。(另外,在分配文本时,请确保分配给
textContent
而不是
innerHTML
,并尽量不要隐式创建全局变量)

var数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'];
常量宽度=Math.sqrt(array.length);
变量大小=100/宽度;
对于(var i=0;i
预先计算宽度(或高度),然后使用
i%width
Math.floor(i/width)
计算当前的
x
y
位置。(另外,在分配文本时,请确保分配给
textContent
而不是
innerHTML
,并尽量不要隐式创建全局变量)

var数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'];
常量宽度=Math.sqrt(array.length);
变量大小=100/宽度;
对于(var i=0;i

您必须首先定义最大列,在您的情况下,它是4。更新代码如下:

var maxCol = 4;
对于
i
的每个增量,使用以下计算:

  x = Math.floor(i / maxCol);
  y = i % maxCol;
var数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'];
var size=100/Math.sqrt(array.length);
var-maxCol=4;
var x=0;
var y=0;
对于(var i=0;i

您必须首先定义最大列,在您的情况下为4。如代码中更新的:

var maxCol = 4;
对于
i
的每个增量,使用以下计算:

  x = Math.floor(i / maxCol);
  y = i % maxCol;
var数组=['a'、'b'、'c'、'd'、'e'、'f'、'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、'o'、'p'];
var size=100/Math.sqrt(array.length);
var-maxCol=4;
var x=0;
var y=0;
对于(var i=0;i

我写这个问题的时间比你回答这个问题的时间多…一份爱。我写这个问题的时间比你回答这个问题的时间多…一份爱。