Javascript 从数组中删除JSON对象将创建;“未定义”;物体
我在JSON和数组方面遇到了一些问题。我在JSON上混了一段时间,试图通过重构一个旧的实现在生产中使用一些JSON。我有两个隐藏的文本字段,一个是[1][2][3]等格式的存储ID,另一个是[name1][name2][name3],因此我认为这将是一个很好的练习,可以了解更多关于JSON的信息,并对其进行重构,使用更可读的对象表示法 无论如何,我离题了。我遇到的问题很有趣,我发现了如何将JSON“推”到数组中,但问题出现在我的delete方法中。当我从数组中删除一个对象时,逗号将保留,从而创建“未定义”的对象。我做错了吗?还有更好的方法吗 在数组中添加了2个项目(全部可用) 从数组中删除1项(保留逗号) 将另一项添加回数组,逗号现在会导致“未定义”对象Javascript 从数组中删除JSON对象将创建;“未定义”;物体,javascript,json,Javascript,Json,我在JSON和数组方面遇到了一些问题。我在JSON上混了一段时间,试图通过重构一个旧的实现在生产中使用一些JSON。我有两个隐藏的文本字段,一个是[1][2][3]等格式的存储ID,另一个是[name1][name2][name3],因此我认为这将是一个很好的练习,可以了解更多关于JSON的信息,并对其进行重构,使用更可读的对象表示法 无论如何,我离题了。我遇到的问题很有趣,我发现了如何将JSON“推”到数组中,但问题出现在我的delete方法中。当我从数组中删除一个对象时,逗号将保留,从而创建
[{
id: "1",
name: "Test (ID: 1)",
status: "new"
}, , {
id: "2",
name: "Test 2 (ID: 2)",
status: "new"
}]
这是我的删除功能
[{
id: "1",
name: "Test (ID: 1)",
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); //
}
}
}
函数removeFromList(Id){
var txtIDs=$(“#”)的值;
var data=eval(txtIDs.val());
对于(变量i=0;i
谢谢你帮我看这个:)
RobDelete是一个用于从对象中删除键的操作符-您不应该真正使用它从数组中删除项,因为它不会执行您期望的操作。可以使用诸如“拼接”或“切片”之类的阵列方法来操纵阵列 这将很有帮助:) 或者,您可以使用如下函数:
function removeArrayEl(arr, index){
newArr = [];
for(var i = 0, l = arr.length;i < l; i++){
if(i != index){
newArr.push(arr[i]);
}
}
return newArr;
}
函数removeArrayEl(arr,索引){
newArr=[];
对于(变量i=0,l=arr.length;i
[编辑] 正如评论者所指出的,数组拼接方法正是这项工作的正确工具,但我将把函数留作参考。
[/edit]您听说过Array.slice吗?这是一个用于从数组中删除元素的本机函数。使用
splice
方法肯定会更简单。您可以说“没有跨浏览器函数用于“从数组中间删除单个数组元素,重新索引其余元素”。是的,你提到过:splice
。例如:vara=[“a”、“b”、“c”];a、 拼接(1,1)代码>将从数组中删除位置1(“b”)处的项。
function removeArrayEl(arr, index){
newArr = [];
for(var i = 0, l = arr.length;i < l; i++){
if(i != index){
newArr.push(arr[i]);
}
}
return newArr;
}