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