我在JSON和数组方面遇到一些问题。我一直在弄乱JSON一段时间,并试图通过重构旧的实现在生产中使用一些JSON。我所拥有的是两个隐藏的文本字段,其中一个商店ID的格式为[1] [2] [3]等,另一个名称为[name1] [name2] [name3],所以我认为这是一个很好的练习,以了解更多信息JSON并对其进行重构,并使用更具可读性的对象表示法。
无论如何我离题。我遇到的问题很有趣,我发现了如何将JSON“推”入数组,但是问题出在我的delete方法中。当我从数组中删除对象时,逗号仍然存在,创建“未定义”对象。我做错了吗,还有更好的方法吗?
向数组添加了2个项目(一切正常)
[{id:"1", name:"Test (ID: 1)", status:"new"}, {id:"2", name:"Test 2 (ID: 2)", status:"new"}]
Run Code Online (Sandbox Code Playgroud)
从数组中删除了1个项目(保留了逗号)
[{id:"1", name:"Test (ID: 1)", status:"new"}, ,]
Run Code Online (Sandbox Code Playgroud)
将另一项添加回数组,逗号现在导致“未定义”对象
[{id:"1", name:"Test (ID: 1)", status:"new"}, , {id:"2", name:"Test 2 (ID: 2)", status:"new"}]
Run Code Online (Sandbox Code Playgroud)
这是我的删除功能
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); //
}
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你帮我看这个:)
抢
Delete 是一个用于从对象中删除键的运算符 - 您不应该真正使用它从数组中删除项目,因为它不会执行您期望的操作。您可以使用 splice 或 slice 等数组方法来操作数组。
MDC 数组方法文档将会很有帮助:)
或者,您可以使用如下函数:
function removeArrayEl(arr, index){
newArr = [];
for(var i = 0, l = arr.length;i < l; i++){
if(i != index){
newArr.push(arr[i]);
}
}
return newArr;
}
Run Code Online (Sandbox Code Playgroud)
[编辑] 正如评论者所指出的,数组拼接方法正是完成这项工作的正确工具,但我将保留该函数以供参考。[/编辑]
| 归档时间: |
|
| 查看次数: |
3391 次 |
| 最近记录: |