如何用纯JavaScript检查网格指定坐标位置是否存在元素?
纯JavaScript实现网格元素检查功能
完全没问题,咱们用纯JavaScript就能轻松搞定这个需求!核心思路很简单:先把所有被元素覆盖的网格坐标存起来,然后写个函数校验传入的坐标是否在这个集合里就行。
实现步骤
- 第一步:维护一个存储已占用坐标的数据集,用
Set会比数组更高效,因为查找操作的时间复杂度是O(1) - 第二步:编写接收
row和column的函数,把传入的坐标转换成统一格式的字符串(比如"行号,列号"),再检查这个字符串是否存在于集合中
代码示例
// 先定义所有被元素覆盖的网格坐标(示例里(3,4)有元素,(1,3)没有) const occupiedPositions = new Set([ "3,4", // 后续可以继续添加其他有元素的坐标,比如"2,2"、"1,5"这类 ]); // 实现检查函数 function isPositionOccupied(row, column) { // 把坐标转成统一格式的字符串,方便比对 const positionKey = `${row},${column}`; // 检查是否在已占用集合中 return occupiedPositions.has(positionKey); } // 测试验证 console.log(isPositionOccupied(1, 3)); // 输出 false console.log(isPositionOccupied(3, 4)); // 输出 true
扩展优化
如果你的网格元素位置是动态变化的(比如元素会移动、新增或删除),可以加几个辅助函数来维护数据集:
// 添加一个被占用的坐标 function addOccupiedPosition(row, column) { const positionKey = `${row},${column}`; occupiedPositions.add(positionKey); } // 删除一个被占用的坐标 function removeOccupiedPosition(row, column) { const positionKey = `${row},${column}`; occupiedPositions.delete(positionKey); }
要是担心传入的坐标参数类型不对(比如是字符串而非数字),还可以在函数里做个类型转换:
function isPositionOccupied(row, column) { const positionKey = `${Number(row)},${Number(column)}`; return occupiedPositions.has(positionKey); }
这样不管是静态还是动态的网格元素位置,都能轻松处理啦!
内容的提问来源于stack exchange,提问作者Gergő Horváth
相关产品推荐
相关产品推荐

