193  
查询码:00000938
JS中彻底删除json对象组成的数组中的元素
来源:https://www.cnblogs.com/jiangzilong/p/6149605.html
作者: 朱凡 于 2020年01月03日 发布在分类 / FM组 / FM_App 下,并于 2020年01月03日 编辑
删除 数组 元素 length 方法 我们 test.length 添加 splice 过远

JS中彻底删除json对象组成的数组中的元素

只是分享一个小知识~

在JS中,对于某个由json对象组成的数组,例如:

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];

如果我们想要删除其中的第二个json对象,应该怎么做呢?其实方法和操作数组完全相同。


在最开始的时候尝试使用了delete运算符,但在查询数组长度的时候发现其实这种方法并不是彻底删除元素,而是删除它的值,但仍会保留空间。

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }]; test.length // 输出为 3 delete test[1 ]; test.length // 输出仍为 3

查询运算符delete我们知道它只是将该值置为undefined,而不会影响数组长度,即将其变为稀疏数组(《JS权威指南》7.5节)。


了解及此,也许想着可以将删除点之后的元素各往前移动1个单位,实现彻底剔除该元素,但在JS方法中我们可以查到一种更加简便的方式:splice() 方法

var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }]; test.length // 输出为 3 test.splice(1, 1 ); test.length // 输出为 2

删除后test.length变为2,这正是我们想要的结果。


在W3C中我们可以查到有关于splice()的描述:

arrayObject.splice(index, howmany, item1, ....., itemX) 方法向/从数组中添加/删除项目,然后返回被删除的项目。

参数1:index 为插入添加或(和)删除的起始位置;

参数2:howmany 指定从数组中添加/删除的元素个数;

参数3:item1, ....., itemX 可选,选择添加操作时填入,表示需要添加的元素。



 推荐知识

 历史版本

修改日期 修改人 备注
2020-01-03 22:42:37[当前版本] 朱凡 格式调整
2020-01-03 22:42:16 朱凡 格式调整
2020-01-03 22:41:58 朱凡 创建版本

  目录
    知识分享平台 -V 4.8.7 -wcp