'Having trouble in sequencing objects in an array

I have an Array of objects which I fetch from Database; array looks like below:

[
 {name:"conrad",sequence:1},
 {name:"sam",sequence:1},
 {name:"ron",sequence:1},
 {name:"dan",sequence:2},
 {name:"neil",sequence:2},
]

when I add another object in through form or onclick; Example object:

{name:"lily",sequence:1}

desired output required is as follows:

[
 {name:"conrad",sequence:2},
 {name:"sam",sequence:3},
 {name:"ron",sequence:4},
 {name:"dan",sequence:5},
 {name:"neil",sequence:6},
 {name:"lily",sequence:1}
]

due to duplicate sequence I am not able to get proper sequencing I got as follows:

[
 {name:"conrad",sequence:2},
 {name:"sam",sequence:2},
 {name:"ron",sequence:2},
 {name:"dan",sequence:3},
 {name:"neil",sequence:3},
 {name:"lily",sequence:1}
]

any help would be appreciated

my code:

let findSeq = await model.find({ sequence: data.sequence, services: data.services, site_id: data.site_id });
            if(findSeq.length > 0){
                let allSeq = await model.find({ services: data.services, site_id: data.site_id }).sort({sequence : 1});
                if(allSeq.length > 0){
                    for (let i = 0; i < allSeq.length; i++) {
                        let old_id = new mongo.ObjectID(allSeq[i]._id);
                        let newSq = parseInt(allSeq[i].sequence) + 1;
                        if(data.id || data._id){
                            if(allSeq[i].sequence >= data.sequence && data._id != old_id) {
                                allSeq[i].sequence = newSq;
                                delete allSeq[i].id;
                                delete allSeq[i]._id;
                                var updateSeq = await model.updateOne({ _id: old_id }, allSeq[i]);
                                if((i + 1) < allSeq.length){
                                    if(newSq != allSeq[i+1].sequence && newSq < allSeq[i+1].sequence){
                                        break;
                                    }
                                }
                            }
                        } else {
                            if(allSeq[i].sequence >= data.sequence) {
                                allSeq[i].sequence = newSq;
                                delete allSeq[i].id;
                                delete allSeq[i]._id;
                                var updateSeq = await model.updateOne({ _id: old_id }, allSeq[i]);
                                console.log(updateSeq);
                                if((i + 1) < allSeq.length){
                                    if(newSq != allSeq[i+1].sequence && newSq < allSeq[i+1].sequence){
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }


Solution 1:[1]

`let objArr = [
    { name: "conrad", sequence: 1 },
    { name: "sam", sequence: 1 },
    { name: "ron", sequence: 1 },
    { name: "dan", sequence: 2 },
    { name: "neil", sequence: 6},
];

let addObj = { name: "lily", sequence: 1 };
let nextseq = parseInt(addObj.sequence);

for (let i = 0; i < objArr.length; i++) {
    nextseq = getnextSeq(nextseq);
    console.log("nextseq",nextseq);
    objArr[i].sequence = nextseq;
    nextseq++;
}
objArr.push(addObj)
console.log(objArr);

function getnextSeq(nextSeq) {
    let duplicateArr = objArr.filter((e) => e.sequence == nextSeq);
    if (duplicateArr.length > 1) {
        nextSeq++
        duplicateArr.pop();
        getnextSeq(nextSeq)
    }
    return nextSeq
}`

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Akshay Narkar