zoukankan      html  css  js  c++  java
  • array容易混淆的几个有用的方法

    转自:http://www.duzengqiang.com/blog/post/295.html

    every(callback:Function, thisObject:* = null):Boolean

    检测是否数组所有元素都满足 callback 方法指定的条件。

    some(callback:Function, thisObject:* = null):Boolean

    检测数组中是否有元素满足 callback 方法指定的条件。

    filter(callback:Function, thisObject:* = null):Array

    根据 callback 方法指定的条件过滤数组,返回由符合条件的元素组成的新数组

    map(callback:Function, thisObject:* = null):Array

    数组的每一个元素执行 callback 方法,返回由对应的结果组成的数组

    forEach(callback:Function, thisObject:* = null):void

    数组的每一个元素执行 callback 方法,不返回任何值第二个参数 thisObject 是第一个参数 callback 的执行范围,即方法内部的 this ,一般不需指定。callback 的参数也都是一样的

    function callback(item:*, index:int, array:Array)

    item 就是数组的每一个元素,如果数组元素类型统一就指明该类型,否则用 * 。index是数组当前元素的索引,array是操作的数组。参数名称可以任意起。如果只使用第一个参数这些方法都不改变原数组,使用后两个参数则可对原 数组进行操作。不推荐这样做。

    代码
    public function TestArray(){
        var arr1:Array 
    = [1,3,5,7,9,11];
        
    //是否所有元素是两位数(false)
        trace(arr1.every(isDoubleDigit));
        
    //是否有两位数的元素(true)
        trace(arr1.some(isDoubleDigit));
        
    //arr1数组元素执行doubleObject方法的返回值组成新的arr2数组
        var arr2:Array = arr1.map(doubleObject);
        
    //arr3是arr2中满足 bigDouble 条件的元素组成的新数组
        var arr3:Array = arr2.filter(bigDouble);
        trace(
    "arr1:",arr1);
        trace(
    "arr2 double :");
        arr2.forEach(traceDouble);
        trace(
    "arr3 double :");
        arr3.forEach(traceDouble);
        
    //double方法使用了后两个参数,直接修改了原数组
        arr1.forEach(double);
        trace(
    "arr1:",arr1);
    }
    private function isDoubleDigit(n:int,i:int,a:Array):Boolean{
        
    return n > 10;
    }
    private function doubleObject(n:int,i:int,a:Array):Object{
        
    return {double:n * 2};
    }
    private function bigDouble(o:Object,i:int,a:Array):Boolean{
        
    return o.double > 10;
    }
    private function traceDouble(o:Object,i:int,a:Array):void{
        trace(o.
    double);
    }
    private function double(n:int,i:int,a:Array):Object{
        a[i] 
    *= 2;
    }

    输出:
    false
    true
    arr1: 
    1,3,5,7,9,11
    arr2 
    double :
    2
    6
    10
    14
    18
    22
    arr3 
    double :
    14
    18
    22
    arr1: 
    2,6,10,14,18,22


  • 相关阅读:
    韩日网民爆发网络大战 互相攻瘫服务器 狼人:
    2010年RSA大会RSA总裁主题演讲:云的安全 狼人:
    黑客非法下载4千万条学历数据被判刑 狼人:
    黑客称Windows 7比Linux安全 Flash是威胁 狼人:
    方法代码Scala中的语言特性是如何实现的(2)
    参考知识svideo vs. composite video vs. component video 几种视频格式详细说明和比较
    旋转长度左旋转字符串(26)
    设置参数cocos2dx 2.x 进度条CCProgressTimer
    队列输入队列基本操作
    安装华硕华硕电脑K52JU安装银联控件蓝屏
  • 原文地址:https://www.cnblogs.com/sevenyuan/p/1755468.html
Copyright © 2011-2022 走看看