我對JSON和數組有一些問題。我一直在用JSON搞亂一會兒,並試圖通過重構舊的實現來使用一些生產。我所擁有的是兩個隱藏的文本字段,一個格式爲[1] [2] [3]等的存儲ID,另一個名稱爲[name1] [name2] [name3],所以我認爲這將是一個很好的練習, JSON和重構,並使用更易讀的對象符號。從數組中刪除JSON對象會創建「未定義」對象
無論如何,我離題了。我遇到的問題是一個有趣的問題,我發現如何「推」JSON到數組中,但問題出現在我的刪除方法。當我從數組中刪除一個對象時,逗號持續存在,創建「未定義」的對象。我做錯了,有沒有更好的辦法?
添加2項陣列(所有細)
[{id:"1", name:"Test (ID: 1)", status:"new"}, {id:"2", name:"Test 2 (ID: 2)", status:"new"}]
刪除1個項目來自陣列(逗號被留在)
[{id:"1", name:"Test (ID: 1)", status:"new"}, ,]
添加另一項目返回到陣列中,逗號現在導致「未定義」對象
[{id:"1", name:"Test (ID: 1)", status:"new"}, , {id:"2", name:"Test 2 (ID: 2)", status:"new"}]
這裏是我的刪除功能
function removeFromList(Id) {
var txtIDs = $("#<%= selected.ClientID %>");
var data = eval(txtIDs.val());
for (var i = 0; i < data.length; i++) {
alert(typeof (data[i]));
if (typeof(data[i]) != 'undefined') {
if (data[i].id == Id)
delete data[i]; // alert(data[i].name); //
}
}
}
感謝在這找我:)
羅布
你有沒有聽說過Array.slice?這是一個本地函數,用於從數組中刪除元素。 – CharlesLeaf 2010-05-26 11:03:46
使用'splice'方法肯定會更容易。 – Gumbo 2010-05-26 11:04:52
你說「沒有一個跨瀏覽器功能'從陣列的中間移除一個數組元素,爲其他元素重新編制索引'」。是的,你提到它:'splice'。例如:'var a = [「a」,「b」,「c」]; a.splice(1,1);'將從數組中移除位置1(「b」)處的項目。 – 2010-05-26 11:05:31