javascript - 如何在对象数组中查找重复项并调整重复位置的值

标签 javascript arrays

我有一个数组对象,其中键的值可以重复自身。还有另一个属性具有该值+常量。我的目标是根据重复中的位置添加一个数字。例如我的数组看起来像这样

[{
    "id": "53990XXXX",
    "components": {
        "CategorySnippet": "snippet-53990XXXX"
    }
}, {
    "id": "56990XXXX",
    "components": {
        "CategorySnippet": "snippet-56990XXXX"
    }
}, {
    "id": "54980XXXX",
    "components": {
        "CategorySnippet": "snippet-54980XXXX"
    }
}, {
    "id": "53990XXXX",
    "components": {
        "CategorySnippet": "snippet-53990XXXX"
    }
}]

我希望它是这样的

[{
        "id": "53990XXXX",
        "components": {
            "CategorySnippet": "snippet-53990XXXX"
        }
    }, {
        "id": "56990XXXX",
        "components": {
            "CategorySnippet": "snippet-56990XXXX"
        }
    }, {
        "id": "54980XXXX",
        "components": {
            "CategorySnippet": "snippet-54980XXXX"
        }
    }, {
        "id": "53990XXXX",
        "components": {
            "CategorySnippet": "snippet-53990XXXX_1"
        }
    }]

我应该如何用纯 JS 做到这一点?

最佳答案

您可以将出现的次数存储在 map 中,如下所示:

function checkArray(somearray){ 
    var temp = {};
    var id;
    var snippet;
    for(var i=0; i<somearray.length; i++){
        id = somearray[i].id;
        if(temp[id] == undefined){
            temp[id] = 0;
        }else{
            temp[id] += 1;
            snippet = somearray[i].components.CategorySnippet;
            somearray[i].components.CategorySnippet = snippet+"_"+temp[id];
        }
    }
    return somearray;
}

编辑:返回原始修改后的数组

关于javascript - 如何在对象数组中查找重复项并调整重复位置的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136676/

相关文章:

javascript - Mongoose 服务器选择错误 : connect ECONNREFUSED 127. 0.0.1:27017

javascript - XML 解析错误 : no root element found Location in Console FF

javascript - 为什么复选框更改了两次?

c - 如何从 C 中的函数返回字符数组?

python - 如何按索引拆分数组,其中拆分的子数组包含拆分点

javascript - 将 javascript 数组连接为数组的数组

javascript - Twitter oEmbed 跨源请求被阻止

javascript - 如何将 div 标签放在 Canvas 上

javascript - 在 $q.all() 中从 json 对象字符串值创建一个 Promise 数组

c++ - 多线程环境下数据写入数组