• ECMAScript5中数组方法


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>ECMAScript5中数组方法</title>
    </head>
    <body>
    实体符号:http://www.w3school.com.cn/tags/html_ref_symbols.html</br>
    &forall;<br>&#8707;
    <script>
    // ECMAScript5定义了9个新的数组方法来遍历、过滤、检测、简化和搜索数组。
    // 1.forEach()方法从头至尾遍历数组,为每个元素调用指定的函数。传递的函数作为forEach的第一个参数,然后forEach()使用三个参数调用该函数:数组元素、元素的索引和数组本身。如果只关心数组元素的值,可以只编写只有一个参数的函数----额外的参数将忽略。
    /*var data = [3,4,5,2,2];
    var sum = 0;
    data.forEach(function(value){
    sum += value;//将每个值累加到sum上
    })
    console.log(sum);//16
    data.forEach(function(v,i,a){
    a[i] = v + 1;//每个数组元素的值自加1
    })
    console.log(data);*/
    // 2.map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。与forEach()不同的是有返回值,返回的是新数组,它不修改调用的数组。
    /*var a = [2,3,1];
    var b = a.map(function(x){
    return x*x;
    });
    console.log(a);
    console.log(b)*/
    // 3.filter()方法返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的:该函数返回ture或false。调用判定函数就像调用forEach()和map()一样。如果返回值为true或能转化为true的值,那么传递给判定函数的元素就是这个子集的成员,它将被添加到一个作为返回值的数组中。
    /*var a = [5,4,3,2,1];
    var smallvalues = a.filter(function(x){return x<3});
    console.log(smallvalues);//[2, 1]
    var everyother = a.filter(function(x,i){
    // return x%2 == 0;//[4, 2]
    return i%2 == 0;
    });
    console.log(everyother);//[5, 3, 1]
    // 注意:filer()会跳过稀疏数组中缺少的元素吗,它的返回数组总是稠密的,为了压缩稀疏数组的空缺,代码如下:
    var sparse = [,,,,3,4,1,undefined,null];
    var dense = sparse.filter(function(){
    return true;
    })
    console.log(dense);//[3, 4, 1, undefined, null]
    // 甚至,压缩空缺并删除undefined和null元素,可以这样使用filter();
    var c = dense.filter(function(x){
    return x!==undefined && x!=null;
    });
    console.log(c);//[3, 4, 1]*/
    // 4.every()和some()方法是数组的逻辑判定:它们对数组元素应用指定的函数进行判定,返回true和false。every()方法就像数学中的“针对所有”的量词&forall;some()方法就像数学中的“存在”的量词&#8707;
    /*var d = [1,3,5,6,7];
    console.log(d.every(function(x){return x<10}));//true
    console.log(d.every(function(x){return x%2 === 0}));//false 并不是所有的值都是偶数
    console.log(d.some(function(x){return x%2 === 0}));//true含有偶数值
    console.log(d.some(isNaN));//false不包含非数值元素。
    var e = [2,'d'];
    console.log(e.some(isNaN));//true*/
    // 5.reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值。这在数式编程中是常见的操作,也可以称为“注入”和“折叠”。
    /*var a = [1,3,4,5,6];
    var b = a.reduce(function(x,y){return x+y},0);//数组求和
    console.log(b);//19
    console.log(a);//[1, 3, 4, 5, 6]
    var c = a.reduce(function(x,y){return x*y},1);//数组求积
    console.log(c);//360
    var d = a.reduce(function(x,y){return (x>y)?x:y;});//求最大值
    console.log(d);//6

    // reduceRight()的工作原理和reduce()一样,不同的是她按照数组索引从高到底(从右向左)处理数组,而不是从低到高。
    var g = [2,2,3];
    var big = g.reduceRight(function(accumulator,value){
    return Math.pow(accumulator,value);
    })
    console.log(big);//81

    */
    // 6.indexOf()和lastIndexOf()搜索整个数组中具有给定的元素,返回找到的第一个元素的索引或者如果没有找到就返回-1。indexOf()从头至尾搜索,lastIndexOf()则反向搜索。

    var e = [0,1,2,2,1];
    console.log(e.indexOf(2));//2
    console.log(e.lastIndexOf(2));//3
    console.log(e.indexOf(5));//-1
    // 在数组中查找所有出现的x,并返回一个包含匹配索引的数组。
    function findallx(a,x){
    var result = [];//将会返回的数组
    var len = a.length;//待搜素数组的长度
    var pos = 0;//开始搜索的索引位置
    while(pos<len){
    pos = a.indexOf(x,pos);//搜素
    if(pos === -1) break;//未找到,就搜素完成
    result.push(pos);//否则,在数组中存储索引
    pos = pos + 1;//并从下一个位置开始搜索
    }
    return result;
    }
    var arr = [1,4,5,6,1,1,5,1,3,1];
    console.log(findallx(arr,1));//[0, 4, 5, 7, 9]


    </script>
    </body>
    </html>

  • 相关阅读:
    HTML5中表单的创建
    防冲撞协议原理实验报告
    yii2.0 Activeform表单部分组件使用方法 [ 2.0 版本 ]
    Yii正则验证
    Yii2用Gii自动生成Module+Model+CRUD
    yii2框架安装运行init.bat报错php.exe不是内部或外部命令
    YII2.0安装教程,数据库配置前后台 [ 2.0 版本 ]
    ignore_user_abort函数制定计划任务
    php 常用的系统函数
    php常用字符串处理函数
  • 原文地址:https://www.cnblogs.com/studyh5/p/9309906.html
Copyright © 2020-2023  润新知