zoukankan      html  css  js  c++  java
  • AS3 about Array.splice()

    今天在实现“从数组中删除一个元素”时,发现splice真是一个特别方便实用的好方法,可实现对数组

    下摘自Adobe文档:

    AS3 function splice(startIndex:int, deleteCount:uint, ... values):Array

    给数组添加元素以及从数组中删除元素。此方法会修改数组但不制作副本。

    注意:要在 Array 的子类中覆盖此方法,请使用 ...args 作为参数,如本例所示:

    public override function splice(...args) {    // your statements here  } 

    参数 startIndex:int — 一个整数,它指定数组中开始进行插入或删除的位置处的元素的索引。您可以用一个负整数来指定相对于数组结尾的位置(例如,-1 是数组的最后一个元素)。
    deleteCount:uint — 一个整数,它指定要删除的元素数量。该数量包括 startIndex 参数中指定的元素。如果没有为 deleteCount 参数指定值,则该方法将删除从 startIndex 元素到数组中最后一个元素的所有值。如果该参数的值为 0,则不删除任何元素。
    ...values — 用逗号分隔的一个或多个值的可选列表或数组,此列表或数组将插入到此数组中由 startIndex 参数指定的位置。

    返回 Array — 一个数组,包含从原始数组中删除的元素。 示例
    下面的代码创建 Array 对象 vegetables,其中包含元素 [spinach, green pepper, cilantro, onion, avocado]。然后,使用参数 2 和 2 调用 splice() 方法,以将 cilantro 和 onion 赋予 spliced 数组。vegetables 数组中就包含 [spinach,green pepper,avocado]。再次调用 splice() 方法(使用参数 1、0 和 spliced 数组),以将 [cilantro,onion] 作为以下数组中的第二个元素:vegetables。 var vegetables:Array = new Array("spinach",                 "green pepper",                 "cilantro",                 "onion",                 "avocado");var spliced:Array = vegetables.splice(2, 2);trace(vegetables); // spinach,green pepper,avocadotrace(spliced);    // cilantro,onionvegetables.splice(1, 0, spliced);trace(vegetables); // spinach,cilantro,onion,green pepper,avocado 请注意,cilantro 和 onion 输出时好像 vegetables 有 5 个元素,但它实际上只有 4 个元素(其中第二个元素是一个包含两个元素的数组)。若要单独添加 cilantro 和 onion,可使用:

    var vegetables:Array = new Array("spinach",                 "green pepper",                 "cilantro",                 "onion",                 "avocado");

      var spliced:Array = vegetables.splice(2, 2);

    trace(vegetables); // spinach,green pepper,avocado

    trace(spliced);         // cilantro,onion

    vegetables.splice(1, 0, "cilantro", "onion"); trace(vegetables); // spinach,cilantro,onion,green pepper,avocado                                                                                                                        

    与splice()相关的:

    as3如何彻底删除数组中的一个对象

    移除数组中的某个对象,比方说array数组索引号为i的对象,可以这样实现:

    removeChild(array[i]);

    array.splice(i, 1);

    移除数组中的全部对象,要用循环一个个从显示列表中移除,因为是全部移除,不需要一个个从数组中删除了,最后将数组设为null就行了:

    for(var i in array) {       removeChild(array[i]); }

    array = null;

    在数组元素上使用 delete 运算符

    delete 运算符用于将数组元素的值设置为 undefined,但它不会从数组中删除元素。例如,下面的代码在 oceans 数组的第三个元素上使用 delete 运算符,但此数组的长度仍然为 5:

    var oceans:Array = ["Arctic", "Pacific", "Victoria", "Indian","Atlantic"];

    delete oceans[2];

    trace(oceans); // 输出:Arctic,Pacific,,Indian,Atlantic

    trace(oceans[2]); // 输出:undefined

    trace(oceans.length); // 输出:5

    可以使用数组的 length 属性截断数组

    如果将数组的 length 属性设置为小于数组当前长度的值,则会截断数组,在索引号高于 length 的新值减 1 处所存储的任何元素将被删除。

    例如,如果 oceans 数组的排序是将所有有效项放在数组的开始处,则可以使用 length 属性删除数组末尾的项,如以下代码所示:

    var oceans:Array = ["Arctic", "Pacific", "Victoria", "Aral","Superior"];

    oceans.length = 2;

    trace(oceans); // 输出:Arctic,Pacific

  • 相关阅读:
    多线程第四篇秒杀 一个经典的多线程同步问题
    用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
    用JSP实现的商城购物车模块
    深入浅出JMS(一)——JMS简单介绍
    hdu 1700 Points on Cycle 水几何
    回调函数
    VC中获取窗体句柄的各种方法
    virus.win32.parite.H病毒的查杀方法
    [WF4.0 实战] WPF + WCF + WF 打造Hello World(基础篇)
    HDU 4946 Area of Mushroom 凸包 第八次多校
  • 原文地址:https://www.cnblogs.com/regalys168/p/3581389.html
Copyright © 2011-2022 走看看