关于JavaScript中对Json进行删除操作

paullbm 2009-06-04 11:19:24
查了百度和谷歌,发现在JavaScript中对Json的增,改,查的资料比较多,但删除操作的基本上没有.
因此,本人采用了一个比较笨的方法实现了Json的删除操作.以期能够抛砖引玉...谢谢!!

<script type="text/javascript">
//根据索引值删除数组中指定的数据
function del(index, dataArray){
var len=dataArray.length;
for(var i=0;i<len;i=i+1){
if(i==(index-1)){
for(var j=i+1;j<len;j=j+1){
//当前索引值后的数据都向前移
dataArray[j-1]=dataArray[j];
}

//移完之后,自身长度减1
dataArray.length--;
}
}
}

var data=[{
name:'111',
email:'111@gmail.com'
},{
name:'222',
email:'222@gmail.com'
},{
name:'333',
email:'333@gmail.com'
}];

del(1,data); //删除第一条之后则第一条为222,第二条为333
del(1,data); //此时再删除第一条(name为222),则第一条为333
//特别说明:del方法中的第二个参数是一个数组,因此相当于是传引用

alert("length:"+data.length); //删除2项后应该只为1了
alert("name:"+data[0].email); //显示为333@gmail.com
alert("email:"+data[1].name); //调用非法(会显示为空或不是对象的错误提示)
</script>


在下已经把砖扔出来了,剩下的就看大家的了...
...全文
6008 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyghehehehe 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 showbo 的回复:]

delete就好了吧?

JScript code

var j={n:'showbo'};
alert(j.n)
delete j.n
alert(j.n)

var js=[{n:'showbo'},{n:'showbo'}];
alert(js[0].n)
delete js[0].n;
alert(js[0].n)
[/Quote]
delete只能value对象,但是key还是一样存在。比如
var aa = {a:"aaa",b:"bbb"};
delete aa[b]只能删掉value“bbb”,而key b 还是存在于aa中。
另外,楼主的做法是数组删除,只是数组的元素是json对象而已,跟json删除一点关系都没有。数组删除用splice就可以了,根本不用这么麻烦。
xyghehehehe 2011-07-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 natineprince 的回复:]

这是数组的增删吧.不是JSON的.只是数组存的是独立的JSON对象.
[/Quote]

delete只能value对象,但是key还是一样存在。比如
var aa = {a:"aaa",b:"bbb"};
delete aa[b]只能删掉value“bbb”,而key b 还是存在于aa中
伊羽 2010-02-23
  • 打赏
  • 举报
回复
splice()方法
好像可以
zhangw428 2009-06-10
  • 打赏
  • 举报
回复
果真是块“砖头”,别误导了初学者就好
mxtas521 2009-06-05
  • 打赏
  • 举报
回复
我觉得其实就是数组的删除。 很同意3L
monexus 2009-06-05
  • 打赏
  • 举报
回复
支持3L,4L
maximus_zhang 2009-06-05
  • 打赏
  • 举报
回复
Go 旅城通票 2009-06-05
  • 打赏
  • 举报
回复
delete就好了吧?


var j={n:'showbo'};
alert(j.n)
delete j.n
alert(j.n)

var js=[{n:'showbo'},{n:'showbo'}];
alert(js[0].n)
delete js[0].n;
alert(js[0].n)
natineprince 2009-06-05
  • 打赏
  • 举报
回复
这是数组的增删吧.不是JSON的.只是数组存的是独立的JSON对象.
silentwins 2009-06-05
  • 打赏
  • 举报
回复
关注
xiangtanboy 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 archko 的回复:]
这跟JSON有什么关系,JSON是JS对象表示法,说到底也是String对象,对字符串的删除,添加?
[/Quote]

这位爷, 你typeof一个json对象看看他到底是object还是string还是什么..
archko 2009-06-05
  • 打赏
  • 举报
回复
这跟JSON有什么关系,JSON是JS对象表示法,说到底也是String对象,对字符串的删除,添加?
xiangtanboy 2009-06-05
  • 打赏
  • 举报
回复
LZ确实就是在删除数组元素, 而且删除的方法也.. 应该用两个slice加一个concat来操作,效率会高点
json其实就是对象, 删除他里面的东西就是 delete jsonObject.member
paullbm 2009-06-04
  • 打赏
  • 举报
回复
补充:

1).上述JS代码中只需要放入到html页面中即可测试....
2).关于del函数中并未做下标检查操作.

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧