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

如何用jQuery/JavaScript对比两个复杂对象数组并修改Array1?

使用jQuery实现两个对象数组的对比更新

需求说明

  • 若Array1中存在的INPUT_ID在Array2中不存在,将该元素的ACTIVE_FLAG设为"3";
  • 若Array2中存在的INPUT_ID在Array1中不存在,将该元素添加到Array1并设置ACTIVE_FLAG为"2"。

给定数组

const Array1 = [
    {INPUT_ID: 1, INPUT_VAL: "Test1", ACTIVE_FLAG: 1}, 
    {INPUT_ID: 2, INPUT_VAL: "Test2", ACTIVE_FLAG: 1}, 
    {INPUT_ID: 3, INPUT_VAL: "Test3", ACTIVE_FLAG: 1}, 
    {INPUT_ID: 4, INPUT_VAL: "Test4", ACTIVE_FLAG: 1}
];

const Array2 = [
    {INPUT_ID: 1, INPUT_VAL: "Test1"}, 
    {INPUT_ID: 2, INPUT_VAL: "Test2"}, 
    {INPUT_ID:4, INPUT_VAL: "Test4"}, 
    {INPUT_ID: 5, INPUT_VAL: "Test5"}
];

实现代码

// 提取Array2的所有INPUT_ID,用于快速校验
const array2Ids = $.map(Array2, item => item.INPUT_ID);

// 处理需求1:标记Array1中不在Array2的元素
$.each(Array1, (_, item) => {
    if ($.inArray(item.INPUT_ID, array2Ids) === -1) {
        item.ACTIVE_FLAG = "3";
    }
});

// 处理需求2:添加Array2中不在Array1的元素
$.each(Array2, (_, item) => {
    const isExist = $.grep(Array1, ele => ele.INPUT_ID === item.INPUT_ID).length > 0;
    if (!isExist) {
        Array1.push({
            ...item,
            ACTIVE_FLAG: "2"
        });
    }
});

// 查看最终结果
console.log(Array1);

代码说明

  1. 用$.map把Array2的INPUT_ID提取为单独数组,后续用$.inArray可以快速判断元素是否存在;
  2. 用$.each遍历Array1,校验每个元素的INPUT_ID是否在Array2中,不在则修改ACTIVE_FLAG为"3";
  3. 再次用$.each遍历Array2,通过$.grep检查当前元素是否已存在于Array1,不存在则添加新元素并设置ACTIVE_FLAG为"2"。

最终输出结果

Array1 = [
    {INPUT_ID: 1, INPUT_VAL: "Test1", ACTIVE_FLAG: 1},
    {INPUT_ID: 2, INPUT_VAL: "Test2", ACTIVE_FLAG: 1},
    {INPUT_ID: 3, INPUT_VAL: "Test3", ACTIVE_FLAG: "3"},
    {INPUT_ID: 4, INPUT_VAL: "Test4", ACTIVE_FLAG: 1},
    {INPUT_ID: 5, INPUT_VAL: "Test5", ACTIVE_FLAG: "2"}
];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:10:55