let say I have an array like below
let arr = [
{id:1, s:1, e: 5},
{id:2, s:6, e: 10},
{id:3, s:11, e: 15},
{id:4, s:1, e: 5},
{id:5, s:6, e: 10},
{id:6, s:11, e: 15},
{id:7, s:11, e: 15},
{id:8, s:20, e: 25},
{id:9, s:25, e: 30},
{id:10, s:20, e: 25},
]
- I have to check duplicate
sandevalue - then on first occurrence object, I need to add
dupkey to store array of duplicate index value where duplicate element appears. - finally i should remove all duplicate object and keep first object with duplicate keys.
expected output should be
[
{id:1, s:1, e: 5, dup: [1,4]},
{id:2, s:6, e: 10, dup: [2,5]},
{id:3, s:11, e: 15, dup: [3,6,7]},
{id:8, s:20, e: 25, dup: [8,10]},
{id:9, s:25, e: 30} // no duplicate then dup should not be added
]
I tried below but no use
const filteredArr = splits.reduce((acc, curr) => {
let repeat = []
const obj = acc.find((item) => {
if (
item.s === curr.s &&
item.e === curr.e
) {
repeat.push(item.id)
repeat.push(curr.id)
return true
} else {
return false
}
})
if (obj) {
if (!obj.isMulti) {
obj.dup = repeat
obj.isMulti = true
}
return acc
}
acc.push(curr)
return acc
}, [])
return filteredArr
I'm not getting proper logic from where to start! any help or guidance please.
one to other