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

如何遍历JSON文件将股票股东userId替换为对应人员姓名

问题排查

第一版代码错误原因

  • 最终返回值arr初始化为单个对象而非数组,无法存储所有股票的处理结果,每次循环都会覆盖arr的属性,最终仅保留最后一条处理后的股票数据
  • 在内层股东循环中每次都重新初始化shareholders = [],会清空之前已匹配到的同股票下的其他股东,导致单支股票下仅保留最后一个匹配成功的股东
  • 三层循环嵌套逻辑冗余,匹配效率极低

第二版代码错误原因

  • 你将return b写在了forEach的回调函数内部,forEach的回调返回值会被直接忽略,且listShareholders函数本身没有在外层返回处理后的股票数组,最终函数返回值为undefined
  • 没有对person为空的边界场景做兼容,当userId匹配不到对应人的时候会出现属性读取错误
正确实现方案

优化点:提前将人员数组转换为以id为key的映射表,避免每次匹配都遍历整个人员数组,匹配效率从O(n*m)提升到O(n)

require("util").inspect.defaultOptions.depth = null;
const axios = require('axios');

async function getPeople(){
    const { data } = await axios.get('https://gist.githubusercontent.com/graffixnyc/a1196cbf008e85a8e808dc60d4db7261/raw/9fd0d1a4d7846b19e52ab3551339c5b0b37cac71/people.json')
    return data
}  

async function getStocks(){
    const { data } = await axios.get('https://gist.githubusercontent.com/graffixnyc/8c363d85e61863ac044097c0d199dbcc/raw/7d79752a9342ac97e4953bce23db0388a39642bf/stocks.json')
    return data
}

async function listShareholders(){
    const peopleList = await getPeople();
    const stockList = await getStocks();
    // 生成人员id映射表,提升匹配效率
    const peopleMap = new Map(peopleList.map(p => [p.id, p]));
    // 遍历处理每支股票
    return stockList.map(stock => {
        // 处理当前股票的股东列表
        const handledShareholders = stock.shareholders.map(holder => {
            const person = peopleMap.get(holder.userId);
            // 匹配不到的情况做兜底,可根据需求调整是否保留
            if (!person) return null;
            return {
                first_name: person.first_name,
                last_name: person.last_name,
                number_of_shares: holder.number_of_shares
            };
        }).filter(Boolean); // 过滤掉匹配失败的空值
        // 返回处理后的股票对象
        return {
            ...stock,
            shareholders: handledShareholders
        };
    });
}

async function bc(){
    const result = await listShareholders()
    console.log(result)
} 

bc()

内容的提问来源于stack exchange,提问作者Swayam Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:15:03