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

如何在JavaScript中实现类似LINQ功能从数组返回指定对象

在JavaScript中通过Id查找对象并获取Title

问题描述

我有如下JavaScript对象数组:

var PriorityList =[]
PriorityList.push({ Id: 4, Title: 'Very High' });
PriorityList.push({ Id: 3, Title: 'High' });
PriorityList.push({ Id: 2, Title: 'Normal' });
PriorityList.push({ Id: 1, Title: 'low' });
PriorityList.push({ Id: 1, Title: 'Very low' });

我希望通过Id找到其中一个对象并返回它的Title。在C#中我可以运行以下代码:

var selPer = PriorityList.Find(2).Title;

或者

var selPer = PriorityList.First(p=>p.Id==2).Title;

但我不知道在JavaScript中该如何实现?

解决方法

方法1:使用Array.find()(ES6及以上版本)

这和C#的First()逻辑最接近,返回第一个匹配条件的元素:

// 查找Id为2的第一个对象,然后获取Title
var selPer = PriorityList.find(item => item.Id === 2).Title;
console.log(selPer); // 输出: Normal

如果不确定数组中一定存在匹配项,建议先判断是否找到对象,避免报错:

var targetItem = PriorityList.find(item => item.Id === 2);
var selPer = targetItem ? targetItem.Title : '未找到匹配项';

方法2:处理多个匹配项(比如Id=1有两个对象)

如果需要获取所有匹配Id的Title,可以用Array.filter()结合map():

// 获取所有Id为1的对象的Title数组
var titles = PriorityList.filter(item => item.Id === 1).map(item => item.Title);
console.log(titles); // 输出: ['low', 'Very low']

方法3:兼容旧版JavaScript(不支持ES6的环境)

如果要兼容ES6之前的环境,可以用普通循环遍历:

function getTitleById(list, targetId) {
    for (var i = 0; i < list.length; i++) {
        if (list[i].Id === targetId) {
            return list[i].Title;
        }
    }
    return '未找到匹配项';
}

var selPer = getTitleById(PriorityList, 2);
console.log(selPer); // 输出: Normal

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 13:21:02