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

如何使用jQuery LINQ比较两个ArrayList对象并获取匹配项

使用jQuery/LINQ.js 获取两个数组的匹配项

嘿,我来帮你搞定这个需求——从array2里筛选出和array1里元素匹配的项对吧?这里有两种实用的实现方式,你可以根据情况选:

方法1:用LINQ.js(jQuery生态常用的LINQ工具库)

如果你已经引入了linq.js库,直接用它的交集方法就能轻松搞定:

// 先确保页面里引入了linq.js
var array1 = [{ 'Id': '1', 'ReportName': 'Action Log', 'ACL': 'UserActionLog' }];
var array2 = [{ 'Id': '1', 'ReportName': 'Action Log', 'ACL': 'UserActionLog' }, { 'Id': '2', 'ReportName': 'Audit Report', 'ACL': 'AuditReport' }, { 'Id': '3', 'ReportName': 'User Log', 'ACL': 'User Log' }, { 'Id': '4', 'ReportName': 'Report', 'ACL': 'Report' }, { 'Id': '5', 'ReportName': 'User Action', 'ACL': 'User Action' }, { 'Id': '6', 'ReportName': 'Dashboard', 'ACL': 'Dashboard' }];

// 生成匹配结果:这里可以自定义匹配规则
var result = Enumerable.From(array2)
    .Intersect(array1, function(x, y) {
        // 选项1:只按Id匹配(简单高效)
        return x.Id === y.Id;
        // 选项2:严格匹配所有属性(完全一致才保留)
        // return x.Id === y.Id && x.ReportName === y.ReportName && x.ACL === y.ACL;
    })
    .ToArray();

console.log(result); // 输出就是你想要的[{ 'Id': '1', ... }]

方法2:只用原生jQuery(不用额外加库)

如果不想引入新的库,用jQuery自带的$.grep和$.each也能实现:

var array1 = [{ 'Id': '1', 'ReportName': 'Action Log', 'ACL': 'UserActionLog' }];
var array2 = [{ 'Id': '1', 'ReportName': 'Action Log', 'ACL': 'UserActionLog' }, { 'Id': '2', 'ReportName': 'Audit Report', 'ACL': 'AuditReport' }, { 'Id': '3', 'ReportName': 'User Log', 'ACL': 'User Log' }, { 'Id': '4', 'ReportName': 'Report', 'ACL': 'Report' }, { 'Id': '5', 'ReportName': 'User Action', 'ACL': 'User Action' }, { 'Id': '6', 'ReportName': 'Dashboard', 'ACL': 'Dashboard' }];

// 筛选array2中在array1里有匹配的项
var result = $.grep(array2, function(item2) {
    var isMatch = false;
    // 遍历array1找匹配
    $.each(array1, function(index, item1) {
        // 这里用严格匹配所有属性的规则,你也可以改成只比Id
        if (item1.Id === item2.Id && item1.ReportName === item2.ReportName && item1.ACL === item2.ACL) {
            isMatch = true;
            return false; // 找到匹配就跳出循环,省点性能
        }
    });
    return isMatch;
});

console.log(result); // 完美得到你要的结果

重点提示一下:两种方法的核心都是自定义匹配规则——如果你的需求是只要Id相同就算匹配,就用第一种规则;如果必须所有属性都完全一致才保留,就用第二种规则。哪怕array1里有多个元素,这两种方法都能找出所有交集项哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:33:35