一:创建数组

1:使用Array构造函数(new可以省略):

var colors = new Array();
创建length值为20的的数组: var colors = new Array(20);
直接传递数组的项: var colors = new Array("red", "blue", "green");

2:使用数组字面量表示法:

 var colors = ["red", "blue", "green"];

3:读取和设置数组的值

colors[2] = "black"   //修改第三项

colors[3] = "brown"  //新增第四项

colors.length = 2;   //数组长度缩短为2

colors[colors.length] = "white" //设置最后一项

二:检测数组

1:一个全局作用域的情况下:

if(value instanceof Array){

  //执行某些操作

}

2:无视多个全局作用域,确定是否为数组:

if(Array.isArray(value)){

  //对数组执行某些操作(ie9+)

}

三:转换方法(toString(),valueOf(),join())

var colors = ["red", "blue", "green"];
alert(colors.toString()); //red,blue,green以逗号分隔的字符串
alert(colors.valueOf()); //red,blue,green返回的是数组
alert(colors); //red,blue,green
var colors2 = ["red", "blue", "green"];
alert(colors2.join(",")); //red,blue,green
alert(colors2.join("||")); //red||blue||green

四:栈方法(push(),pop()),队列方法(shirt(),push())

var colors = new Array();
var count = colors.push("red","blue","green"); //向后插入两项
alert(count); //3
alert(colors); //red,blue,green var item = colors.pop(); //移除最后一项并返回
alert(item); //green
alert(colors.length) //2 var item2 = colors.shift(); //移除第一项并返回
alert(item2); //red
alert(colors.length) //1 var count2 = colors.unshift("black","white");
alert(count2); //3
alert(colors); //black,white,blue

五:重排序方法(reverse(),sort())

var values = [0,1,5,10,15];
values.reverse(); //翻转数组
alert(values); //15,10,5,1,0
values.sort(); //升序排列,先调用tostring()将数组项转换成字符串,然后比较字符串。
alert(values); //0,1,10,15,5
values.sort(compare);   //加入比较函数
alert(values) //0,1,5,10,15
function compare(value1,value2){
return value1 - value1; //降序
}

六:操作方法(concat(),slice(),splice())

//concat():连接数组产生新的数组
var colors = ["red","blue","green"];
var colors2 = colors.concat("white",["black","yellow"]);
alert(colors); //"red","blue","green"
alert(colors2); //"red","blue","green","white","black","yellow"
//slice(start,[end])//基于当前数组产生一个新的数组
var colors = ["red","blue","green","black"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,3);
alert(colors);//"red","blue","green","black"
alert(colors2);//"blue","green","black" 没有第二个参数则截取到数组末尾
alert(colors3);//"blue","green" 不包括end位置的项
//splice()删除,插入,替换
var colors = ["red","blue","green","black"];
var removed = colors.splice(0,1);//从下标为0开始,截取一项
alert(removed);//"red"
alert(colors);//"blue","green","black"
removed = colors.splice(1,0,"white","orange");//从下标为1开始,截取0个,并在当前位置插入"white","orange"。
alert(removed);//空,这里没有截取项
alert(colors);//"blue","white","orange","green","black"
removed = colors.splice(1,1,"red","purple");////从下标为1开始,截取1个,并在当前位置插入"white","orange"。
alert(removed);//""white
alert(colors);//"blue","red","purple","orange","green","black"

七:位置方法(indexOf(),lastIndexOf())

//indexOf(项,[起点的索引]),lastIndexOf(项,[起点的索引])。要找到的项必须严格相等
var numbers = [1,2,3,4,5,4,3,2,1]; //下标从0到1,不管是从先往后还是从后往前,数组下标不变
alert(numbers.indexOf(4)); //3
alert(numbers.lastIndexOf(4)); //5
alert(numbers.indexOf(4,4)); //5
alert(numbers.lastIndexOf(4,4)); //3

八:迭代方法(every(),some(),filter(),map()) 

 var numbers = [1,2,3,4,5,6];
var everyResult = numbers.every(function(item,index,array){
return (item > 2); //如果所有item都满足条件,才会返回true
});
alert(everyResult); //false
var someResult = numbers.some(function(item,index,array){
return(item>2); //如果有一个item满足条件,会返回true
});
alert(someResult); //true
var filterResult = numbers.filter(function(item,index,array){
return (item > 2); //截取满足条件的item并返回
});
alert(filterResult); //3,4,5,6
var mapResult = numbers.map(function(item,index,array){
return (item * 2); //对所有item操作并返回
});
alert(mapResult);//2,4,6,8,10,12

九:归并方法(reduce(),reduceRight())

 var numbers = [1,2,3,4,5,6];
var sum = numbers.reduce(function(prev,cur,index,array){
return prev + cur;//返回的值会作为下一个prev继续操作,最终返回的是所有项相加的值.从左往右
});
alert(sum);//21
var sum2 = numbers.reduceRight(function(prev,cur,index,array){
return prev + cur;//返回的值会作为下一个prev继续操作,最终返回的是所有项相加的值.从右往左
});
alert(sum2);//21

  

 

  

var numbers = [,,,,,,,,];//下标从0到1,不管是从先往后还是从后往前,数组下标不变
alert(numbers.indexOf());//3
alert(numbers.lastIndexOf());//5
alert(numbers.indexOf(,));//5
alert(numbers.lastIndexOf(,));//3

js创建及操作数组的更多相关文章

  1. js中用来操作数组的相关的方法

    push向数组的的末尾添加新的内容 unshift向数组的开头增加新的内容 slice(n,m)从索引n开始(包含n),找到索引m处(不包含m),然后把找到的内容作为一个新的数组返回,原有的数组不改变 ...

  2. JS中如何操作数组

    背景:随笔中所应用到的代码来自于上一篇随笔,MVC&JQuery如何根据List动态生成表格,部分代码不再重复. 代码如下: $("#btnTan").click(func ...

  3. js创建1-100的数组

    //实现方法一:循环赋值var arr1 = new Array(100);for(var i=0;i<arr1.length;i++){ arr1[i] = i;}console.log(ar ...

  4. js创建dom操作select

    document.getElementById("column-left").getElementsByTagName("header")[0].onclick ...

  5. [转]js创建1-100的数组

    //实现方法一:循环赋值var arr1 = new Array(100);for(var i=0;i<arr1.length;i++){ arr1[i] = i;}console.log(ar ...

  6. Js中的字符串/数组中常用的操作

    JS为每种数据类型都内置很多方法,真的不好记忆,而且有些还容易记混,现整理如下,以便以后查看: 一.String ①charAt()方法用于返回指定索引处的字符.返回的字符是长度为 1 的字符串. 语 ...

  7. php数组的创建及操作

    //数组的创建 //1 $usernames = array('李彦宏','周宏伟','马云','俞敏洪','李开复'); echo $usernames; //array,打印类型 echo '&l ...

  8. js中对arry数组的各种操作小结

    最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我 ...

  9. JS 操作数组对象

    我们在操作数组时,加入数组中是以对象的形式存在,例如: 那么我们会涉及到去重复,去掉为0的数组中的对象,js代码如下: function getItemList(gid, totalMoney, ad ...

随机推荐

  1. java之迭代器

    迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator();while(it ...

  2. 用CSS3实现带小三角形的div框(不用图片)

    现在看到了很多带小三角形的方框,如微信.Mac版的QQ.QQ空间的时间轴等等,在聊天或者是发表的状态的内容外面都有一个带小三角形的矩形框包围着,感觉看着很不错,于是决定亲自动手写一个,我上次用的是偏移 ...

  3. 滑动页面,顶部导航or顶部 固定在一个位置

    现在很多页面 特别是电商用的比较多 比如电商里面某个商品的详细页 往下拉页面 当滚轮到达一定位置的时候  导航栏即固定在顶部 其实他的原理很简单, 就是一开始设置导航为相对定位,然后计算出滚动条离顶部 ...

  4. 使用EditText搜索listview里面的内容,实现Listview跟随变动的情况

    1.布局的XML文件里面添加EditText控件(省略)控件id=mSearch ListView的id=admin_lv; 2.一.获取ListView展示的数据(通过适配器获取) 二.这个是我要说 ...

  5. addEventListener之handleEvent

    addEventListener() 方法是将指定的事件监听器注册到目标对象上,当该对象触发指定的事件时,指定的回调函数就会被执行.语法: element.addEventListener(type, ...

  6. head First HTML与CSS读书笔记

    调整图片大小 有滚动条的图片可给不了好的用户体验,为了让图片的大小更适合浏览器窗口.这时候就需要对图片的大小进行调整看书之前.我调整图片大小的方式是在<img>元素使用 width 和 h ...

  7. 百度上传插件WebUploader,angularjs指令封装

    1.WebUploader特点 官网地址:http://fex.baidu.com/webuploader/ 1.1 分片.并发 分片与并发结合,将一个大文件分割成多块,并发上传,极大地提高大文件的上 ...

  8. C# Word

    C# 操作word文档 1.c#操作word 在指定书签插入文字或者图片  1using Word = Microsoft.Office.Interop.Word; 2 3object Nothing ...

  9. 重构前的程序:通过rsync命令抓取日志文件

    基本概况: 我有一台服务器每天每个小时都会生成一个日志文件,这些日志文件会被保留2天,超过2天会被一个程序压缩放到备份目录,日志文件的文件名是有命名要求的,例如:project_log.2013010 ...

  10. 【Android实战开发】3G技术和Android发展简介

    随着移动设备的不断普及和发展,相关软件的开发也越来越受到人们的关注,其中要提及的就是Android开发.本系列博客主要为大家介绍Android的开发,可能会有人问:现在互联网上已经有很多的Androi ...