Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果在数组中发现重复项,则必须通过纯javascript添加带有key的索引_Javascript_Arrays_Json - Fatal编程技术网

如果在数组中发现重复项,则必须通过纯javascript添加带有key的索引

如果在数组中发现重复项,则必须通过纯javascript添加带有key的索引,javascript,arrays,json,Javascript,Arrays,Json,我在数组中有一组项。每个项目中都有多个对象 如果我们发现了基于特定对象的重复项,则必须使用该键对象添加索引 例如: var values = [ { name: 'someName' }, { name: 'someName' }, { name: 'some' }, { name: 'some' }, { name: 'single' } ]; 它将作为 var values = [ { name: 'someName' },

我在数组中有一组项。每个项目中都有多个对象

如果我们发现了基于特定对象的重复项,则必须使用该键对象添加索引

例如:

var values = [
    { name: 'someName' },
    { name: 'someName' },
    { name: 'some' },
    { name: 'some' },
    { name: 'single' }
]; 
它将作为

var values = [
        { name: 'someName' },
        { name: 'someName1' },
        { name: 'some' },
        { name: 'some1' },
        { name: 'single' }
    ];
如何用纯javascript(无jQuery)编写逻辑


将的
thisArgs
作为保留计数的临时对象的解决方案

var value=[{name:'someName'},{name:'someName'},{name:'some'},{name:'some'},{name:'single'}];
值。forEach(函数(a){
如果(!此[a.name]){
此[a.name]={count:0};
返回;
}
a、 姓名+=++此[a.name].计数;
},Object.create(null));

document.write(“”+JSON.stringify(值,0,4)+“”)问题和示例不是很内联

如果我们发现了基于特定对象的重复项,则必须使用该键对象添加索引

从上面这句话中,我的理解是,如果我们发现了一个副本,应该做以下任何一个。由于还不清楚如果存在多个重复项会发生什么,因此代码将处理所有现有的重复项

1。第一个索引值将添加到重复对象的名称属性值中

var值=[
{name:'someName'},
{name:'someName'},
{name:'some'},
{name:'some'},
{name:'single'},
{name:'someName'},
{name:'some'}
],
redIx=values.reduce((p,c,i)=>{!!p[c.name]?p[c.name].push(i):(p[c.name]=[],p[c.name].push(i))
返回p
},{});控制台日志(redIx)
Object.keys(redIx).forEach(e=>redIx[e].forEach((i,j)=>j>0&&(value[i].name+=redIx[e][0]);

document.write(“”+JSON.stringify(值,0,2)+“”)你尝试过什么吗?我已经添加了JSFIDLE,但无法在帖子中获得logicAdded JSFIDLE