Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript - Insert & Remove a element in object

I have a object.

var dl_items;

After a loop for inputing data:

dl_items[code] = itemObject;

I have a array:

dl_items : {
            "code_A" : { "index" : 1, "status" : 2, "name" : A_data},
            "code_B" : { "index" : 2, "status" : 0, "name" : B_data},
            "code_C" : { "index" : 3, "status" : 1, "name" : C_data},
            "code_D" : { "index" : 4, "status" : 2, "name" : D_data},
            "code_E" : { "index" : 5, "status" : 4, "name" : E_data}
           }

Now I want to remove "dl_items[code_D]" and insert it into after "code_A" (index 2) for result like :

 dl_items : {
            "code_A" : { "index" : 1, "status" : 2, "name" : A_data},
            "code_D" : { "index" : 4, "status" : 2, "name" : D_data},
            "code_B" : { "index" : 2, "status" : 0, "name" : B_data},
            "code_C" : { "index" : 3, "status" : 1, "name" : C_data},                
            "code_E" : { "index" : 5, "status" : 4, "name" : E_data}
            }

I try to use "delete" after using a loop to find index of code_D:

delete dl_items[code_D];

and it successful removed but how can i insert code_D into his new index ?

Edit : Thanks all everyone to help me understand more about array.

like image 605
Zero-IT Avatar asked Jun 01 '26 23:06

Zero-IT


1 Answers

Since object doesn't have an order, you need to convert your current implementation into array:

var dl_items = [];

When you need to add an item to the array:

dl_items.push({ code: code, item: itemObject });

Now, the similar data as array from your question is:

dl_items: [
            { code :"code_A", item: { index: 1, status: 2, name: "A_data" } },
            { code :"code_B", item: { index: 2, status: 0, name: "B_data" } },
            { code :"code_C", item: { index: 3, status: 1, name: "C_data" } },
            { code :"code_D", item: { index: 4, status: 2, name: "D_data" } },
            { code :"code_E", item: { index: 5, status: 3, name: "E_data" } },
          ]

In order to move the entry with code_D after the entry with code_A, use the following:

var codeDEntry = dl_items[3];
dl_items = dl_items
    .filter(function(entry) {
        return entry !== codeDEntry;
    })
    .splice(1, 0, codeDEntry);

Hope this helps!

like image 89
Naor Avatar answered Jun 05 '26 01:06

Naor



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!