JavaScript - How to find x,y position of element by key in a linear array of elements that are displayed as a square/matrix?(如何在显示为正方形/矩阵的元素的线性数组中通过键找到元素的x,y位置?)
本文介绍了如何在显示为正方形/矩阵的元素的线性数组中通过键找到元素的x,y位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下值数组:
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)的16
(数组长度)将为[0,0]
6
(g)的16
(数组长度)将为[1,2]
13
(n)的16
(数组长度)将为[3, 1]
- 等
我在for(i = 0; i < array.length; i++)
循环中迭代数组值,以将它们显示为容器中的块。我可以内联计算每个值在循环中[x,y]
位置,也可以使用函数来计算-这并不重要。
我卡住了..
var array = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'];
var size = 100 / Math.sqrt(array.length);
for(var i = 0; i < array.length; i++) {
tile = document.createElement('div');
tile.innerHTML = array[i] + ' [x,y]';
tile.style.width = size+'%';
tile.style.height = size+'%';
tile.style.float = 'left';
tile.style.background = 'rgb('+(50+i*5)+','+(150+i*5)+',200)';
document.getElementById('square').appendChild(tile);
}
<div id="square" style="width:200px;height:200px;border:1px solid;"></div>
推荐答案
提前计算宽度(或高度),然后使用i % width
和Math.floor(i / width)
计算出当前的x
和y
位置。(另外,在为文本赋值时,请确保赋值给textContent
而不是innerHTML
,并且尽量不隐式创建全局变量)
var array = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'];
const width = Math.sqrt(array.length);
var size = 100 / width;
for(var i = 0; i < array.length; i++) {
const tile = document.createElement('div');
const x = i % width;
const y = Math.floor(i / width);
tile.textContent = `${array[i]} [${x},${y}]`;
tile.style.width = size+'%';
tile.style.height = size+'%';
tile.style.float = 'left';
tile.style.background = 'rgb('+(50+i*5)+','+(150+i*5)+',200)';
document.getElementById('square').appendChild(tile);
}
<div id="square" style="width:200px;height:200px;border:1px solid;"></div>
这篇关于如何在显示为正方形/矩阵的元素的线性数组中通过键找到元素的x,y位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在显示为正方形/矩阵的元素的线性数组中通过键找到元素的x,y位置?


猜你喜欢
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01