js中的数组类似与java中的容器 类型可以不同、长度可变

一、数组的声明

var arr1=new Array();//数组的声明一
     var arr2=[1,2,3,true,new Date()];//数组的声明二

二、数组的操作

  var arr3=arr2.pop();//移除数组的最后一个元素,返回移除的元素
   var arr4=arr2.push(12,23);//向数组中添加元素,返回新数组的长度
   var arr5=arr2.shift();//移除数组的头部一个元素,返回移除的元素
   var arr6=arr2.unshift(false,"qq");//从头部向数组中添加元素,返回新数组的长度
   var arr7=arr2.splice(1,2);//截取新数组(第一个参数起始位置,第二个参数截取个数,第三个参数:追加新元素的个数)
   var arr8=arr2.slice(2,4);//截取范围 返回截取的内容 操作的不是数组本身

var arr9=[12,13,3,34];
       var arr10=[14,15];
   var result1=arr9.concat(arr10);//合并两个数组 返回一个新数组
   var result2=arr9.join("-");//在元素之间加入内容 返回一个字符串
   arr9.sort();//排序 正序 把元素当作字符串    操作数组本身
   arr9.reverse();//排序倒序 按照数组的顺序 倒序   操作数组本身

正常的排序:

window.onload=function(){
var arr3=[10,3,7,9,34];
arr3.sort();
console.info(arr3);//[10, 3, 34, 7, 9]
arr3.sort(compare);//使用 自定义的函数 compare
console.info(arr3);//[3, 7, 9, 10, 34]
}
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2) {
return 1;
}else{
return 0;
}
}

三、 ECMN5新特性

1、下标的方法
           var aa=[1,2,3,4,5];
     var index1=aa.indexOf(1);  //0       返回元素在数组的位置
           var index2=aa.indexOf(2,4);//3      从第几(2)个位置查某个(4)元素的位置
           var index3=aa.lastIndexOf(2);//从数组尾部查找元素的位置
     2、 迭代数组的方法

window.onload=function(){
var aa=[1,2,3,4,5];
//对于数组的每一个元素用一个函数运行,如果都返回true,结果返回true
  var verey=aa.every(function(item,index,array){
    return item>0;
   });
console.info(verey);//true; //对于数组的每一个元素用一个函数运行,返回过滤后的结果
var filter=aa.filter(function(item,index,array){ 
  return item > 2;
});
console.info(filter);//[3,4,5] //循环数组的每一个元素(for循环)
aa.forEach(function(item,index,array){
alert(item);//打印每个元素
}); //对于数组的每一个元素用一个函数运行可以经过函数执行后,把新的结果返回
var map=aa.map(function(item,index,array){
return item*2;
});
console.info(map);//[2,4,6,8,10] //对于数组的每一个元素用一个函数运行,如果有一项返回true,结果返回true
var some=aa.some(function(item,index,array){
return item>3;
});
console.info(some);//true; //pre 前一个值 cur当前值 index索引位置 array数组(左边开始)
var reduce=aa.reduce(function(prev,cur,index,array){
return prev+cur;
});
console.info(reduce);//15 //pre 前一个值 cur当前值 index索引位置 array数组(右边开始)
var reduceRight=aa.reduceRight(function(prev,cur,index,array){
return prev+cur;
});
console.info(reduceRight);//15
}

四、常用方法————————Util

       <!-- ———————移除指定元素 str是要删除的元素 ————————————-->
Array.prototype.moveElement=function(str){
if(this.length===0){
throw new Error("数组空");
}
for(var index=0,len=this.length;index<len;index++){
if(this[index]===str){
if(isNaN(index)||index>this.length){
return false;
}
for(var i=0,n=0;i<this.length;i++){
  if(this[i]!=this[index]){
    this[n++]=this[i]
  }
}
this.length-=1;
return;
}
}
}
    window.onload=function(){
//去除数组中的重复项
var arr=[1,3,2,2,4,5,6,6,7,8,9];
alert(uniq(arr));
}
//把数组转为对象
var arrToObj=function(arr){
var obj={};
for(var i=0;i<arr.length;i++){
obj[arr[i]]=i;
}
return obj;
}
//把对象转为数组
var objToArr=function(obj){
var arr=[];
for(var attr in obj){
if(obj.hasOwnProperty(attr)){
arr.push(attr);
}
}
return arr;
}
//去掉数组中的重复项
function uniq(arr){
return objToArr(arrToObj(arr));
}

js 数组的更多相关文章

  1. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  2. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  3. 转→js数组遍历 千万不要使用for...in...

    看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...

  4. js数组操作大全

    原文(http://www.cnblogs.com/webhotel/archive/2010/12/21/1912732.html) 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简 ...

  5. js数组去重的4种方法

    js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.inde ...

  6. js 数组处理函数

    本文转载自有有<js 数组处理函数> concat 将参数列表连接到原数组后面形成一个新的数组并返回,原有数组不受影响. var arr = ["a","b& ...

  7. js 数组赋值问题 :值传递还是引用?

    转载于知乎var a = [1,2,3]; var b = a; a = [4,5,6]; alert(b); //[1,2,3] 面试时被问到这样一个问题,竟然从来没试过... 当时直接的理解,数组 ...

  8. JS数组方法汇总 array数组元素的添加和删除

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[ ...

  9. js数组操作

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

  10. js数组操作【转载】

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

随机推荐

  1. AppFuse3.5对接oracle数据库

    AppFuse是一个使用Java语言开发web应用系统的集成框架.java开发人员最头痛的事情就是面对大量的框架不知该如何选择.这些框架性能如何,兼容性如何等等都需要筛选比较.Appfuse作者Mat ...

  2. windows环境下安装win8.1+Mac OS X 10.10双系统教程

    首先要感谢远景论坛里的各位大神们的帖子  没有他们的分享我也不能顺利的装上Mac OS X 10.10! 写这篇随笔主要是为了防止自己遗忘,同时给大家分享下我的经验. 本教程适用于BIOS+MBR分区 ...

  3. [Leetcode][JAVA] Recover Binary Search Tree (Morris Inorder Traversal)

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...

  4. linux下subversion server安装手册

    linux下subversion server安装手册 安装基于的Linux版本为:Red Hat Enterprise Linux Server release 6.3. 一 准备需要的安装包. ( ...

  5. MVC4 学习笔记 之 URL中存在编译的空格 20%20%

    /Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10 ...

  6. 写字节流转换String 代码示例

    public void pushEmployee(EmpPushToTianFangRequest request){ try { StringWriter sw = new StringWriter ...

  7. PHP多文件上传(二维数组$_FILES('文件域的名称'),move_uploaded_file(‘临时文件名’,‘新的文件名’))

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. mysql5.7压缩包版安装-来自百度经验

    解压缩        将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是C:\mysql57 2 添加环境变量 右键计算机->属性->高级系统设置->环境变量:在系统变量里添加 ...

  9. Ubuntu NFSserver 简易安装及使用

    服务器端(ip:192.168.1.100): sudo apt-get install nfs-kernel-server #安装nfs 客户端(ip:192.168.1.110): sudo ap ...

  10. 解剖SQLSERVER 第十一篇 对SQLSERVER的多个版本进行自动化测试(译)

    解剖SQLSERVER 第十一篇    对SQLSERVER的多个版本进行自动化测试(译) http://improve.dk/automated-testing-of-orcamdf-against ...