JS中徹底刪除json對象組成的數組中的元素


只是分享一個小知識~

在JS中,對於某個由json對象組成的數組,例如:

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];

如果我們想要刪除其中的第二個json對象,應該怎么做呢?其實方法和操作數組完全相同。

 

在最開始的時候嘗試使用了delete運算符,但在查詢數組長度的時候發現其實這種方法並不是徹底刪除元素,而是刪除它的值,但仍會保留空間。

    var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
    test.length   //輸出為 3
    delete test[1];
    test.length   //輸出仍為 3

查詢運算符delete我們知道它只是將該值置為undefined,而不會影響數組長度,即將其變為稀疏數組(《JS權威指南》7.5節)。

 

了解及此,也許想着可以將刪除點之后的元素各往前移動1個單位,實現徹底剔除該元素,但在JS方法中我們可以查到一種更加簡便的方式:splice() 方法

    var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];
    test.length   //輸出為 3
    test.splice(1, 1);
    test.length   //輸出為 2

刪除后test.length變為2,這正是我們想要的結果。

 

在W3C中我們可以查到有關於splice()的描述:

arrayObject.splice(index, howmany, item1, ....., itemX)  方法向/從數組中添加/刪除項目,然后返回被刪除的項目。

參數1:index                       為插入添加或(和)刪除的起始位置;

參數2:howmany                 指定從數組中添加/刪除的元素個數;

參數3:item1, ....., itemX     可選,選擇添加操作時填入,表示需要添加的元素。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM