如何将两个数组内容合并生成目标JSON,解决变量未初始化引用报错
报错原因修复
Cannot access 'blopp' before initialization报错属于典型的变量先使用后声明问题:你在执行blopp相关的push、map操作后,才执行let blopp = xxx的初始化逻辑,而let声明的变量存在暂时性死区,声明前访问会直接抛出引用错误。只需要把变量初始化的代码挪到所有操作它的语句之前即可解决。
目标结构生成实现
你的两个数组employeeId和employeeMoney按索引一一对应(同一个下标位置的id和金额属于同一个员工),不需要分别遍历两个数组,直接按索引匹配拼接即可生成指定结构,完整实现代码如下:
// 第一步:先初始化目标变量,避免声明前访问报错 let blopp: { all: Array<{ employee_id: string | number; amount: number; currency: string; }> } = { all: [] }; // 第二步:按索引匹配两个数组的对应数据,生成目标结构 // 若两个数组长度可能不一致,可自行添加长度校验逻辑兜底 for (let i = 0; i < this.employeeId.length; i++) { blopp.all.push({ employee_id: this.employeeId[i], amount: this.employeeMoney[i], currency: 'USD' }) } // 若需要传递JSON字符串给其他组件,直接调用JSON.stringify即可 const targetJson = JSON.stringify(blopp);
原写法额外优化提示
map方法的设计目的是生成新数组,如果你只是遍历数组执行push操作,使用forEach更符合语义- 原代码中
blopp.all的初始结构是数组,直接写blopp.all.money.push属于语法错误,数组不存在money属性,只有对象可以通过点运算符取对应属性
内容的提问来源于stack exchange,提问作者Batuhan Zorbey Zengin
相关产品推荐
相关产品推荐

