You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zilliqa智能合约mapping读取时console.log输出undefined问题求助

问题原因与解决方案

这个问题有两个常见的触发原因,对应解决方法如下:

原因1:返回的users_map不是普通JS对象,是ES6 Map实例

zilliqa.js的getSmartContractState接口返回的合约映射类型字段,默认会封装为ES6 Map结构,不能直接用普通对象的[]语法取值。
解决方法:调用Map的get方法取值即可

let username = users_map.get(getAddress)

原因2:地址大小写不匹配

Zilliqa支持校验和格式的地址(大小写混合),JS对象/Map的键都是大小写敏感的,如果你输入的getAddress和映射中存储的地址大小写不一致,就会匹配失败返回undefined。
解决方法:统一将地址转为全小写(或全大写)后再匹配:

// 如果是普通对象的情况
const normalizedUsers = Object.fromEntries(
  Object.entries(users_map).map(([addr, name]) => [addr.toLowerCase(), name])
)
let username = normalizedUsers[getAddress.toLowerCase()]

// 如果是Map的情况
let username = users_map.get(getAddress.toLowerCase())

你可以先执行console.log(users_map instanceof Map)确认类型,再选择对应方案即可。

内容的提问来源于stack exchange,提问作者Naveen Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:15:04