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

如何在嵌套数组中根据颜色ID获取对应人员名称?

问题描述

需要编写一个方法,根据输入的颜色ID,返回对应人员的name字段。例如输入97时,应返回名称“Veli”。给定的数据结构如下:

const data = [
    {
        id: 1,
        name: "Ali",
        colorList: [
            {
                id: 99,
                color_name: 'yellow',
            }
        ],     
    },
    {
        id: 2,
        name: "Veli",
        colorList: [
            {
                id: 98,
                color_name: 'red',
            },
            {
                id: 97,
                color_name: 'blue',
            },
        ]
    }
]
解决方案

这里提供几种实用的实现思路:

方法一:使用find和some

利用数组的find方法遍历人员列表,再通过some检查该人员的colorList中是否存在目标颜色ID:

function getUserNameByColorId(colorId) {
    const user = data.find(user => user.colorList.some(color => color.id === colorId));
    return user ? user.name : null;
}

// 调用示例
console.log(getUserNameByColorId(97)); // 输出 "Veli"
console.log(getUserNameByColorId(99)); // 输出 "Ali"
console.log(getUserNameByColorId(100)); // 输出 null

方法二:预构建映射表提升查询效率

如果需要多次执行查询,提前构建颜色ID到用户名的映射表,能大幅提升后续查询速度:

// 提前构建映射关系
const colorIdToUserName = {};
data.forEach(user => {
    user.colorList.forEach(color => {
        colorIdToUserName[color.id] = user.name;
    });
});

// 查询方法
function getUserNameByColorId(colorId) {
    return colorIdToUserName[colorId] || null;
}

// 调用示例
console.log(getUserNameByColorId(97)); // 输出 "Veli"

方法三:基础嵌套循环实现

如果偏好原生循环写法,也可以用嵌套循环完成匹配:

function getUserNameByColorId(colorId) {
    for (const user of data) {
        for (const color of user.colorList) {
            if (color.id === colorId) {
                return user.name;
            }
        }
    }
    return null;
}

// 调用示例
console.log(getUserNameByColorId(97)); // 输出 "Veli"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:20:36