函数
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<1) return [];
    
    var tester;
    if( typeof condition=="function" ) tester=condition;
    else if( condition.constructor==RegExp ) tester = function(e, i) { return condition.test(e); };
    else if( typeof 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;
    if( typeof 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 = [ 2, 7, 8, 5, 1, 9, 2, 6, 0 ];
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);

转载于:https://www.cnblogs.com/RobotTech/archive/2008/02/12/1067417.html

JavaScript数组操作 [Z]相关推荐

  1. Javascript数组操作(转)

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  2. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  3. javaScript数组操作--有道笔记整理

    javascript之数组操作 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一 ...

  4. JavaScript 数组操作大全

    1. pop() pop() 方法从数组中删除最后一个元素: 实例 var fruits = ["Banana", "Orange", "Apple& ...

  5. 超实用的JavaScript数组操作技巧

    引自公众号文章:https://mp.weixin.qq.com/s/PBX_7JnclRui6I_MEcheww 1. 数组去重 这里只展示两种可行的方法, 一种是实用.from()方法, 第二种是 ...

  6. html中js定义数组,javascript数组的定义及操作实例

    数组是一组数据的集合,js中,数组里面的数据是可以 不同类型的 定义数组: 1.通过类实例化来创建数组 var alist01=new Array(1,2,3); 2.通过直接量的方式来创建数组 va ...

  7. javascript之数组操作

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  8. javascript数组的操作

    数组的标准定义是:一个存储元素的线性集合(collection),元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量. 而在javascript中,数组是一组特殊的对象. 1 ...

  9. javascript数组的各种操作

    用 js有非常久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方非常多,自以为js高手的自己竟然无从下手,一下狠心,我学 ...

最新文章

  1. 服务端客户端QA:协作对接沟通流程及优化
  2. ie中placeholder字体颜色兼容问题
  3. 详解虚函数的实现过程之多重继承(3)
  4. 5334. 【NOIP2017提高A组模拟8.24】空
  5. BZOJ 3143 Luogu P3232 [HNOI2013]游走 (DP、高斯消元)
  6. WCF X.509验证
  7. Python_列表生成式
  8. oracle DML错误日志(笔记)
  9. SoapUI、Jmeter、Postman三种接口测试工具的比较分析
  10. Ubuntu系统下安装rust
  11. Linux 内核C -- 第02课:驱动中的指定初始化
  12. 批量删除 Excel 工作薄文档中的工作表
  13. PCD格式、Trimmed ICP实现、旋转矩阵四元数欧拉角
  14. Mysql更新百万历史数据
  15. Kettle组件 计算器全解析
  16. 年前找工作好,还是年后找工作好?求职需警惕,小心陷入羊群效应
  17. 电脑常用快捷键与指示灯
  18. c语言判断非法字符题目,C语言考试题库之判断题-c语言考试判断题
  19. 93.第十九章 MySQL数据库 -- MySQL安装和基本使用(三)
  20. oracle安装成功验证

热门文章

  1. cvsaveimage 异常_C++ IplImage*的若干bug之三:cvSaveImage問題
  2. 交比不变性 matlab,高等几何答案
  3. ad 单点登录 java 访问权限_如何配置Portal 基于AD的单点登录配置
  4. php Tsocket read 0,thrift 返回 TSocket read 0 bytes 求助!!!!汗血宝马
  5. python的基础是java_Python基础学习
  6. 20201023:力扣第37场双周赛(上)
  7. 做网站买主机还是服务器,做网站是买服务器还是买主机
  8. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
  9. pom报错如何解决(org.apache.maven.archiver.mavenarchiver.getmanifest)
  10. VB用API控制输入法状态