前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js实现两个数组对象,重复的属性覆盖,不重复的添加

js实现两个数组对象,重复的属性覆盖,不重复的添加

原创
作者头像
国服第二切图仔
发布2024-06-25 09:37:49
830
发布2024-06-25 09:37:49
举报
文章被收录于专栏:jsjs

当使用ES5语法时,你可以使用for循环和hasOwnProperty方法来实现两个数组对象的合并,覆盖重复的属性,并添加不重复的属性。以下是一个示例代码:

代码语言:javascript
复制
function mergeArrays(arr1, arr2) {
    var merged = [];
    var propMap = {};

    // 遍历第一个数组,将属性添加到merged和propMap中
    for (var i = 0; i < arr1.length; i++) {
        var prop = arr1[i];
        merged.push(prop);
        propMap[prop.key] = prop;
    }

    // 遍历第二个数组,检查属性是否已存在于propMap中
    for (var j = 0; j < arr2.length; j++) {
        var prop = arr2[j];
        if (propMap.hasOwnProperty(prop.key)) {
            // 如果属性已存在,则覆盖
            var index = merged.indexOf(propMap[prop.key]);
            merged[index] = prop;
        } else {
            // 如果属性不存在,则添加
            merged.push(prop);
        }
    }

    return merged;
}

var arr1 = [{key: '1', value: 'a'}, {key: '2', value: 'b'}, {key: '3', value: 'c'}];
var arr2 = [{key: '2', value: 'b2'}, {key: '3', value: 'c2'}, {key: '4', value: 'd'}];

console.log(mergeArrays(arr1, arr2));

这段代码首先创建了一个空的合并数组 merged 和一个空的属性映射对象 propMap。然后,通过遍历第一个数组 arr1,将属性添加到 merged 数组中,并在 propMap 对象中以属性的键值作为键,属性对象作为值进行存储。

接下来,遍历第二个数组 arr2,对于每个属性,检查它是否已存在于 propMap 中。如果存在,说明属性是重复的,则找到它在 merged 数组中的位置,并用第二个数组中的属性对象覆盖它。如果不存在,说明属性是不重复的,直接将属性添加到 merged 数组中。

最后,返回合并后的数组 merged。这样就实现了两个数组对象的合并,重复属性被覆盖,不重复属性被添加。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档