1

I have this javascript / jQuery code:

var json = [
    {
        id: 0,
        text: 'enhancement'
    },
    {
        id: 1,
        text: 'bug'
    },
    {
        id: 3,
        text: 'invalid'
    },
    {
        id: 4,
        text: 'wontfix'
    }
];



delete json[2]
console.log(json)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

This code delete the array key 2. But I need an reindex after that, so that I can access the other 3 values like:

json[0]
json[1]
json[2]

How can I realize this ?

Trombone0904
  • 4,132
  • 8
  • 51
  • 104

4 Answers4

2

Use splice instead of delete like below (W3schools splice):

json.splice(target_index,1);

Please read the Mozila page about the splice method for more information.

Sina Kadkhodaei
  • 510
  • 4
  • 10
0

If you don't want to mutate the value you can simply filter the array

json.filter((i, idx) => idx !== 2)
lost_in_magento
  • 703
  • 8
  • 22
0

you can reindex by simply using

json.filter(function(){return true;})

here is a working demo.

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
  $("#delete").click(function(){
   var json = [
    {
        id: 0,
        text: 'enhancement'
    },
    {
        id: 1,
        text: 'bug'
    },
    {
        id: 3,
        text: 'invalid'
    },
    {
        id: 4,
        text: 'wontfix'
    }
];



delete json[2]


console.log(json.filter(function(){return true;}))
  });
});
</script>
</head>
<body>
 <button id="delete">delete</button>
</body>
</html>
Neeraj
  • 749
  • 6
  • 15
0

Splice method removes elements from an array and, if necessary, inserts new elements in their place, returning the deleted elements.

splice(start: number, deleteCount?: number)

json.splice(2, 1);