JavaScript如何将扁平数组转换为嵌套结构的JSON API响应
正确实现方案
问题说明
你当前的代码仅收集了每个国家对应的城市名称列表,既没有做二级嵌套结构,也没有存储对应用户的user_id和ssn字段,所以无法得到预期输出。
实现代码
const nestedResult = {}; // flatArray替换为你从数据库查询得到的原始扁平数组 flatArray.forEach(user => { const { user_country: country, user_city: city, user_id, ssn } = user; // 如果需要ssn转为字符串格式,把下面ssn改为ssn: String(ssn)即可 const userItem = { user_id, ssn }; // 初始化国家层级结构 if (!nestedResult[country]) { nestedResult[country] = []; } // 查找当前国家下是否已存在对应城市的分组 const existCityGroup = nestedResult[country].find(group => Object.hasOwn(group, city)); if (!existCityGroup) { // 不存在城市分组则新建后推入国家数组 nestedResult[country].push({ [city]: [userItem] }); } else { // 已存在城市分组则直接追加用户信息 existCityGroup[city].push(userItem); } }); // 输出格式化后的结果验证 console.log(JSON.stringify(nestedResult, null, 2));
补充说明
你给出的预期输出里第一条用户的ssn值为"7"属于笔误,代码默认保留原始数据的229,按上述注释修改即可完全匹配你要求的输出格式。
内容的提问来源于stack exchange,提问作者PKP
相关产品推荐
相关产品推荐

