Flutter中如何实现点击按钮创建命名规范的动态Map?
解决方案:创建规律性命名的Map实例
JavaScript里没法直接用${}语法动态定义变量名,得换个思路用容器来存储这些Map,下面给你两种常用的可行方案:
方案一:用对象存储(推荐,方便按名称访问)
用一个对象当容器,每次点击按钮时生成规律的键名,把新创建的Map绑定到这个键上:
// 初始化存储容器和计数器 const mapStorage = {}; let mapIndex = 1; // 按钮点击事件处理函数 function createNewMap() { // 生成带序号的键名,比如map_1、map_2 const mapKey = `map_${mapIndex}`; // 创建新Map并存入容器 mapStorage[mapKey] = new Map(); // 序号自增,保证每次命名唯一 mapIndex++; // 测试:打印当前所有Map console.log(mapStorage); }
之后你要访问某个Map,直接用mapStorage.map_1或者mapStorage['map_1']就能拿到。
方案二:用数组存储(适合按顺序访问的场景)
如果不需要按名称精准访问,只是要按创建顺序管理,用数组更简单:
const mapList = []; function createNewMap() { const newMap = new Map(); // 给Map加个自定义name属性,方便识别是第几个 newMap.name = `map_${mapList.length + 1}`; mapList.push(newMap); // 测试:打印当前所有Map console.log(mapList); }
要访问的话,用mapList[0]、mapList[1]就能拿到对应顺序的Map。
不推荐的方案:动态生成全局变量
如果非要模拟“动态变量名”的效果(不建议,容易污染全局作用域,不利于代码维护),浏览器环境下可以用window对象:
let mapIndex = 1; function createNewMap() { const mapName = `map_${mapIndex}`; window[mapName] = new Map(); mapIndex++; // 之后可以直接用map_1、map_2这些变量访问 console.log(window[mapName]); }
内容的提问来源于stack exchange,提问作者littletree
相关产品推荐
相关产品推荐

