• JavaScript数组操作 [Z]


    函数
    join(delimiter): 把数组中各个元素使用分隔符(delimiter)拼成字符串
    concat(array1, array2, ...): 合并数组,对原数组不影响,只是返回合并后的新数组
    pop(): 删除并返回最后一个元素
    push(element1, element2, ...): 在数组末尾追加元素
    shift(): 删除并返回第一个元素
    unshift(element1, element2, ...): 在数组开始位置添加元素
    reverse(): 将数组元素顺序首尾反转
    sort(function): 给数组排序
        如果不给参数,默认按字符排序(所有元素是数字也不会按数字排序的)
        参数必须是一个函数,类似function(a, b) {},在函数中判断a, b的大小,a>b返回正数,a<b返回负数,a=b返回0
    slice(start, end): 返回一个新的数组,将start开始,到end结束(不包括end)之间的元素复制到新数组中
    splice(start, count, replaceElement1, replaceElement2, ...): 删除或者替换数组元素,从start开始,对count个元素进行删除或替换
        如果提供replaceElement参数则进行替换,否则进行删除操作,被替换的元素个数和replaceElements的个数不必相等
        返回一个数组,包含被删除或替换掉的元素

    判断是否数组的方法
    var arrayVar = ["aaa", "bbb", "ccc"];
    var nonArrayVar = { length:4, otherAttribute:"attr" };
    document.write(arrayVar.constructor==Array);
    document.write("<br />");
    document.write(nonArrayVar.constructor==Array);
    结果是true, false

    grep、map
    Perl语言带出来的东西,jQuery实现selector时用了这种方式
    grep
    对数组的grep操作,指类似这样的代码:
    Array newArray = grep(condition, oldArray),这个操作将对oldArray数组的每个元素进行遍历,如果当前处理元素符合条件condition,则加入到返回数组中
    jQuery中的grep类似这样: function( elems, callback),elems是DOM元素集合,callback是实现selector的一些表达式函数,如果callback返回true则表明当前处理的元素符合selector表达式
    map
    与grep不同的是,map不进行条件判断,只是对数组中每个元素执行指定的操作,就是将一个循环过程进行改装

    喜欢动态语言风格的,可以给数组加个grep和map方法,例如:
    Array.prototype.grep = function(condition, operation, inverse){
        
    if(arguments.length<1return [];
        
        
    var tester;
        
    iftypeof condition=="function" ) tester=condition;
        
    else if( condition.constructor==RegExp ) tester = function(e, i) { return condition.test(e); };
        
    else iftypeof condition=="string" ) 
            
    try{
                tester 
    = eval( "false||function(e, i){ return " + condition + "; }" );
            }
    catch(e) {
            }
        
    else tester = function(e, i) { return false; };
        
    if(!tester) return [];
        
        
    var command;
        
    iftypeof operation=="function" ) command=operation;
        
    else if(typeof operation=="string")
            
    try{
                command 
    = eval( "false||function(e, i){ " + operation + "; return e; }" );
            }
    catch(e) {
            }
        
    if(typeof command!="function") command=function(e, i) { return e; };
        
        
    var result = [], match, t;
        
    for(var i=0; i<this.length; i++){
            match 
    = tester(this[i], i);
            
    if(match) t = command(this[i], i);
            
    if(match && !inverse && t!=null) t.constructor==Array ? result.concat(t) : result.push(t);
            
    else if(!match && inverse) result.push(this[i]);
        }
            
        
    return result;
    };
    Array.prototype.map 
    = function(callback){
        
    if(!callback || typeof callback!="function"return this;
        
    for(var i=0; i<this.length; i++) callback( this[i], i);
        
    return this;
    };
    使用示例:
    var oldArray = [ 278519260 ];
    var newArray1 = oldArray.grep("i%2==0"); //返回索引为偶数的所有元素
    var newArray2 = oldArray.grep("e%2==1"); //返回数组元素的值为奇数的所有元素
    document.write(newArray1 + "<br />"); //2,8,1,2,0
    document.write(newArray2 + "<br />"); //7,5,1,9

    oldArray 
    = [ "aa""bbbb""abcdefg""ccccc""111121111""999999999" ];
    var newArray3 = oldArray.grep(/(\w)\1{4,}/);
    document.write(newArray3 
    + "<br />"); //ccccc,999999999
    典型jQuery风格的代码:
    var obj = document.createElement("ul");
    obj.innerHTML 
    = '<li>AAAAAA</li> <li style="display: none;">BBBBBB</li> <li>CCCCCC</li> <li>DDDDDD</li>';
    document.body.appendChild(obj);

    window.setInterval(
    function(){
        
    //把NodeList转换成数组
        var liList = obj.getElementsByTagName("li");
        
    var liArray = [];
        
    for(var i=0; i<liList.length; i++) liArray.push( liList[i] );
        
    //示例grep的使用
        liArray
            .grep(
    'e.style["display"]=="none"''e.style["display"] = "";'true)
            .map(
    function(e, i){ e.style["display"= "none"; });
    }, 
    1500);
  • 相关阅读:
    SCILAB
    定积分的scilab程序
    4月26日科目一练习(96分)
    4月27日1科目一练习(90分)
    4月27日科目一练习(93分)
    4月12日科目一练习(91分)
    测试学习网站
    HttpWatch工具简介及使用技巧(转)
    Linux系统资源分析
    LoadRunner监控Linux服务器
  • 原文地址:https://www.cnblogs.com/RobotTech/p/1067417.html
Copyright © 2020-2023  润新知