如何为数组对象中嵌套的token0、token1添加symbol属性?
解决方法
首先纠正你代码里的两处小错误:
myObj.data.user[0]应该是myObj.data.users[0](原对象结构里是users数组)- map回调里的
...balance应该是...liquidityPosition(参数名是liquidityPosition)
要在保留所有原有属性的前提下,给token0和token1添加symbol属性,你可以通过逐层解构对象+扩展运算符来实现,具体代码如下:
let updated = myObj.data.users[0].liquidityPositions.map( (liquidityPosition) => ({ // 保留当前liquidityPosition的所有原有属性 ...liquidityPosition, // 重新定义pair属性,先拷贝原有pair的所有属性 pair: { ...liquidityPosition.pair, // 更新token0,保留原有id,添加symbol token0: { ...liquidityPosition.pair.token0, symbol: "你的token0符号值" }, // 更新token1,保留原有id,添加symbol token1: { ...liquidityPosition.pair.token1, symbol: "你的token1符号值" } } }) );
如果symbol值需要根据token的id动态获取(比如从预定义的映射表取值),可以改成下面的写法:
// 示例:token id 与 symbol 的映射表 const tokenSymbolMap = { "token0-id-1": "ETH", "token1-id-1": "USDT", // 更多映射关系... }; let updated = myObj.data.users[0].liquidityPositions.map( (liquidityPosition) => ({ ...liquidityPosition, pair: { ...liquidityPosition.pair, token0: { ...liquidityPosition.pair.token0, symbol: tokenSymbolMap[liquidityPosition.pair.token0.id] || "未知符号" }, token1: { ...liquidityPosition.pair.token1, symbol: tokenSymbolMap[liquidityPosition.pair.token1.id] || "未知符号" } } }) );
这种方式通过...扩展运算符浅拷贝每一层的原有属性,再针对性修改token0和token1,既不会丢失任何原有数据,也能顺利添加新属性。
内容的提问来源于stack exchange,提问作者code_learner93
相关产品推荐
相关产品推荐

