zoukankan      html  css  js  c++  java
  • 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     可选,选择添加操作时填入,表示需要添加的元素。

  • 相关阅读:
    ArcGis设置到 Oracle 的连接
    arcgis批量处理mxd定义服务中的路径
    Arcgis创建SDE_Geometry、SDO_Geometry的区别【转】
    JS常用的function集合
    如何找回Oracle中system,sys用户的密码[转]
    Oracle Spatial中SDO_Geometry详细说明[转]
    JS常用的三种匿名函数
    通用javascript方法
    好文分享之--被无现金社会抛弃的人
    电子产品使用感受之--Windows 10 小米笔记本Air HDMI转VGA无信号问题
  • 原文地址:https://www.cnblogs.com/jiangzilong/p/6149605.html
Copyright © 2011-2022 走看看