簡體   English   中英

從多維數組中刪除元素

[英]Remove element from multidimensional array

我有以下多維數組:

{"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

在這個例子中我想刪除

"1":{"cid":"1","uid":"3"}

從中。 我已經嘗試了我在stackoverflow上找到的所有解決方案,並且無法使它們中的任何一個工作。 我主要是php的人,所以我可能會錯過一些重要的東西嗎?

只需使用適當的屬性delete

var obj = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete obj["1"];

注意"在1左右將其標記為標識符而不是數組索引!

編輯正如評論中所指出的,無論你如何處理[1]屬性, obj都是一個對象,沒有數組。 我的最后一點是為了清楚地表明你正在使用一個對象而不是一個數組。

根據我的經驗,大多數人將整數屬性與數組和字符串屬性與對象相關聯。 所以我認為以給定的方式強調財產可能更有幫助。

 var myObj= {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}}

delete myObj['1'];

alert ( myObj['1']);

請注意刪除存在跨平台問題:

跨瀏覽器問題

雖然ECMAScript使對象的迭代順序依賴於實現,但似乎所有主流瀏覽器都支持基於最先添加的屬性的迭代順序(至少對於不在原型上的屬性)。 但是,對於Internet Explorer,當在屬性上使用delete時,會導致一些令人困惑的行為,從而阻止其他瀏覽器將對象文字等簡單對象用作有序關聯數組。 在資源管理器中,雖然屬性值確實設置為未定義,但如果后來添加了一個具有相同名稱的屬性,則該屬性將在其舊位置迭代 - 而不是在迭代序列的末尾,正如人們可能期望的那樣刪除了該屬性,然后將其添加回來。

JavaScript沒有多維數組,只有數組和對象。 那說: delete theObject['1']; 應該工作得很好

var arr=[[10,20,30],[40,50,60],[70,80,90]];

for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr[i].length;j++){
        if(arr[i][j]==50){
            arr[i].splice(j,1);
        }
    }
}

document.write(arr);

通過以下方式將Object (不是Array )分配給變量:

var o = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

然后做:

delete o['1'];

而已!

您可以在javascript Ex中使用delete:

var x = {"2":{"cid":"2","uid":"2"},"1":{"cid":"1","uid":"3"}};

delete x['1'];

另外,檢查一下:

在JavaScript中刪除對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM