I have this script that builds an object:
console.log(solution([2, 1, 3, 5, 3, 2]))
function solution(inputArray) {
let arrMap = []
for (let i = 0; i < inputArray.length; i++) {
var repeated = false;
var e = arrMap.find(s => s.element == inputArray[i])
if(e){
repeated = true;
e.repeated = true;
e.firstPosition = e.position
e.lastPosition = i
delete e['position'];
}
arrMap.push({
element : inputArray[i],
position: i,
repeated: repeated
})
}
return arrMap
}
This is the object that the script builds:
[
{ element: 2, repeated: true, firstPosition: 0, lastPosition: 5 },
{ element: 1, position: 1, repeated: false },
{ element: 3, repeated: true, firstPosition: 2, lastPosition: 4 },
{ element: 5, position: 3, repeated: false },
{ element: 3, position: 4, repeated: true },
{ element: 2, position: 5, repeated: true }
]
I simply want to make a change to the return by deleting the remaining lines of the items that are repeated, in this case, items 2 and 3. As shown below:
[
{ element: 2, repeated: true, firstPosition: 0, lastPosition: 5 },
{ element: 1, position: 1, repeated: false },
{ element: 3, repeated: true, firstPosition: 2, lastPosition: 4 },
{ element: 5, position: 3, repeated: false },
{ element: 3, position: 4, repeated: true }, //<---- DUPLICATED! DELETE THIS LINE
{ element: 2, position: 5, repeated: true } //<---- DUPLICATED! DELETE THIS LINE
]
The result should be as shown below:
[
{ element: 2, repeated: true, firstPosition: 0, lastPosition: 5 },
{ element: 1, position: 1, repeated: false },
{ element: 3, repeated: true, firstPosition: 2, lastPosition: 4 },
{ element: 5, position: 3, repeated: false },
]
Aucun commentaire:
Enregistrer un commentaire