Array类型

  Array也是ECMAScript中常用类型之一,其特点是数组中的每一项都可以保存任何类型的数据,数组的大小可以动态调整。

创建数组

方式1:使用`Array`构造函数

var books = new Array();
var books = new Array(20); //如果知道数组的大小,可以给构造函数传递该参数
var books = new Array("English", "math"); //创建包含三个字符串的数组
var books = Array(); //new关键字可以省略

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

var books = ["englisg", "math"];
var names = [];
var tasks = [,,,,]; //不推荐用法,会根据浏览器的不同,创建4或者5项的数组

设置和读取数组

var colors = ["blue", "yellow", "red"];
alert(colors[0]); //使用方括号并提供基于相应值的基于0的数字索引
colors[3] = "black"; //可以替换指定位置的值;如果索引超过了数组现有的项数,只超出一项,则数组的索引值自动加1;像本利中如果colors[4]="green",那colors[3]会被自动存入undefined

  length属性

  length始终返回0或者更大的值,且它不是只读的,通过该属性可以从数组的末尾移除项或向数组中添加添加新项:

var books = ["English", "math"];
books.length = 1;
console.log(books[1]); //undefined var books = ["English", "math"];
books.length = 2;
console.log(books[2]); //undefined //数组的最后一项的索引始终是length-1,因此下一个新项目的位置就是length,用来添加项目非常方便
var books = ["English"];
books[books.lenth] = "math";

检测数组

if(Array.isArray(value)) {
//对数组执行某些操作
}

转换方法

var books = ["English", "math"];
console.log(books.toString()); //English,math
console.log(books.valueOf());//["English", "math"]
console.log(books);//["English", "math"]

  数组继承的toLocaleString()toString()valueOf()方法,在默认情况下都会以逗号分割的字符串的形式返回数组项。如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。

//join()方法接收一个参数,即分隔符
var books = ["English", "math"];
console.log(books.join(",")); //English,math
console.log(books.join("||")); //English||math

栈方法

  `push()`方法接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度

var books = new Array();
var count = books.push("English", "math");
console.log(count); //2
count = books.push("Chinese");
console.log(count); //3

  pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项

var item = books.pop();
console.log(item); //Chinese
console.log(books.length); //2

队列方法

  `shift()`能够移除数组中的第一个项并返回该项,同时数组长度减1

var books = new Array();
var count = books.push("English", "math");
console.log(count); //2
count = books.push("Chinese");
console.log(count); //3
var item = books.shift();
console.log(item); //English
console.log(books.length); //2

  unshift()能在数组前端添加任意个项并返回新数组的长度

var books = new Array();
var count = books.unshift("English", "math");
console.log(count); //2
count = books.unshift("black");
console.log(count); //3 var item = books.pop();
console.log(item); //math
console.log(books.length); //2

重排序方法

  `reverse()`翻转数组项的顺序

var num = [1, 4, 3, 5, 2];
num.reverse();
console.log(num); //[2, 5, 3, 4, 1]

  sort()按照升序排列数组项,该方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,然后这种方法并不是最佳的,即使数组中每一项都是数值,但是最后比较的都是字符串,因此sort()方法可以接受一个比较函数座位参数,方便指定哪个值位于哪个值的前面。

function compare(val1, val2) {
if(val1 < val2){
return 1;
} else if(val1 > val2){
return -1;
} else {
return 0;
}
} var num = [0, 1, 4, 10, 12];
num.sort(compare);
console.log(num); //[12, 10, 4, 1, 0]

操作方法

  `concat()`方法可以基于当前数组中的所有项创建一个新数组

var books = ["English", "math"];
//传递给concat()方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中
var books2 = books.concat("PE", ["Chinese", "Chemistry"]);
console.log(books); //["English", "math"]
console.log(books2); //["English", "math", "PE", "Chinese", "Chemistry"]

  slice()方法能够基于当前数组中的一个或者多个项创建一个新数组

var books = ["English", "math", "Computer"];
var books2 = books.slice(1); //表示从1位置开始截取
var books3 = books.slice(1, 2); //表示从1位置开始截取,到位置2结束
console.log("books2"); // ["math", "Computer"]
console.log("books3"); // ["math"]

  splice()方法

  1. 删除 指定两个参数, 要删除的第一项的位置和要删除的项数

  2. 插入 指定三个参数,起始位置、0(要删除的项数),要插入的项

  3. 替换 指定三个参数, 起始位置,要删除的项数和要插入的任意数量的项

    //删除第一项

    var books = ["English", "math", "Chinese"];

    var removed = books.splice(0, 1);

    console.log(books); //["math", "Chinese"]

    console.log(removed); // ["English"]

    //从位置1开始插入两项

    removed = books.splice(1, 0, "PE", "Chemistry");

    console.log(books); // ["math", "PE", "Chemistry", "Chinese"]

    console.log(removed); // []

    //插入两项,删除一项

    removed = books.splice(1, 0, "English", "Biology");

    console.log(books); //["math", "English", "Biology", "PE", "Chemistry", "Chinese"]

    console.log(removed); // []

位置方法

  `indexOf()`从数组的开头(位置0)开始向后查找,返回要查找的项在数组中的位置,没找到返回-1

  `lastIndexOf()`从数组的末尾开始向前查找

var num = [1, 2, 4, 7];
console.log(num.indexOf(2)); //1

迭代方法

  一共5个迭代方法,每个方法都接收两个参数:在每一项商誉性的函数和运行在该函数的作用域的对象--影响this的值。传入这些方法中的函数会接收三个参数,数组项的值、该项在数组中的位置和数组对象本身

//对数组中每一项都运行指定函数,如果这个函数对每一项的结果都是true,就返回true
var num = [1, 2, 4, 5, 6];
var everyResult = num.every(function(item, index, array){
return(tiem >2 );
})
console.log(everyResult); //false //对数组中的每一项都运行指定函数,如果这个函数对任一项的结果返回true,就返回true
var someResult = num.some(function(item, index, array){
return (item >2);
})
console.log(someResult); //true //filter()方法,有了前面两个例子,顾名思义该方法是对数组中的项用指定的函数来进行过滤,将过滤得到的项组成数组返回
var num = [1, 2, 4];
var filterResult = num.filter(function(item, index, array){
return (item > 2);
})
console.log(filterResult); //[4] //map()方法也返回一个数组,是针对原有数组的每一项运行传入函数的结果,所组成的新的数组
var num = [1, 2, 3];
var mapResult = num.map(function(item, index, Array){
return item*2;
})
console.log(mapResult);//[2, 4, 6] //forEach()对数组中的每一项进行迭代,该方法没有返回值
var num = [1, 2, 3];
num.forEach(function(item, index, Array){
//执行操作
})

归并方法

  `reduce()`和`reduceRight()`

Array类型的更多相关文章

  1. JS高程5.引用类型(2)Array类型

    Array类型: ECMAScript数组的每一项可以保存任何类型的数据,数组的大小是可以动态调整的. 创建数组的基本方式: (1)使用Array构造函数 var color=new Array(); ...

  2. 5.2 Array类型介绍

    Array类型是数组类型,Array(数组)类型也是引用类型中的一种. js 数组中的每一项可以保存任何类型的数据. js数组的大小/长度是可以动态调整的.如果你往数组中添加数据,数组长度会自动增加. ...

  3. JavaScript中Array类型方法总结

    Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的 ...

  4. Object类型与Array类型

    总结--JS中的引用类型: Object类型,Array类型,Boolean类型,Number类型,String类型,Date类型, Function类型,RegExp类型,单体内置对象(Global ...

  5. oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案

    1. 创建自定义的类型.由于Oracle没有提供现成的array类型,这里用table类型来模拟. CREATE OR REPLACE TYPE varchar_array is Table OF v ...

  6. mongo中查询Array类型的字段中元素个数

    I have a MongoDB collection with documents in the following format: { "_id" : ObjectId(&qu ...

  7. 引用类型之Array类型

    Array类型 ECMAScript数组与其它语言数组一样,都是数据的有序列表.但是ECMAScript数组的每一项可以保存任何类型的数据.而且,ECMAScript数组是可以动态调整的. 1.创建和 ...

  8. JavaScript引用类型之Array类型一

    一.简介 除了Object之外,Array类型恐怕是ECMAScript中最常用的类型了.下面就来分析ECMAScript中的数组与其他语言中的数组的异同性: 1.相同点: (1)他们都是数据的有序列 ...

  9. 如何判断一个变量是数组Array类型

    在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...

  10. 从头开始学JavaScript (十二)——Array类型

    原文:从头开始学JavaScript (十二)--Array类型 一.数组的创建 注:ECMAscript数组的每一项都可以保存任何类型的数据 1.1Array构造函数 var colors = ne ...

随机推荐

  1. Java之IO(零)总结

    转载请注明原出处:http://www.cnblogs.com/lighten/p/7274378.html 1.前言 本章是对之前所讲述的整个Java的IO包的一个总结,抽出个人认为比较重要的知识点 ...

  2. #pragma的一些用法

    1.#pragma message message 参数:Message参数能够在编译信息输出窗口输出相应的信息,这对于源代码的信息控制特别重要,其使用方法为: #pragma message(&qu ...

  3. 在Java Web项目中,不用ActionContext类来获得tomcat部署项目的绝对路径

    例子:sendIosApns.class.getClassLoader().getResource("").getFile().replaceAll("%20" ...

  4. 第一章 面向对象软件工程与UML

    这个OOAD讲的都是很抽象的东西!老师说这个在现在的学习中用到的不是很多,但是以后出去工作的时候就会常用到的. 首先来了解OOAD是讲什么的. OOAD:Object Oriented Analysi ...

  5. Java的commons包的简介

    Jakarta Commons是Jakarta的一个子项目,目的是创建和维护独立于其他框架和产品的程序包(packages).Jakarta Commons项目源于重用,其中的程序包必须确保能够重用. ...

  6. windows 系统安装 IIS 以及配置 web

    Win7系统或win8自带了IIS和framework,不需要单独去下载,只需要开启后就可以运行asp.net程序 由于时间关系,先分享两个关于这个的链接: win7安装iis及web配置教程 htt ...

  7. PowerDesigner中利用数据库表反向生成PDM(jdk必须是32位)

    第一步:创建一个空的PDM模型(选择对应的DBMS):File-->New 第二步:选择DataBase-->Configure Connections,配置即将连接的数据库 第三步:选择 ...

  8. 169.254地址无网关信息 ----- 解决方案 启动DHCP服务

    169.254.X.X是Windows操作系统在DHCP信息租用失败时自动给客户机分配的IP地址,.看到地址的时候没有网关. 解决方案   启动DHCP服务 1. 首先确认 路由器  DHCP 服务已 ...

  9. 【转】外国朋友出的js题目,你能对几道

    原文地址 http://perfectionkills.com/javascript-quiz/ 中文地址加解释:by Aaron:http://www.cnblogs.com/aaronjs/p/3 ...

  10. Node.js之Express三

    端午节3天说没就没了,自己的脚伤都快一个月了还没好,原本想着去桂林或者厦门呢,可计划赶不上变化,看自己公司C#软件工程师的招聘条件有要求MongoDb,年前就打算自己学习下,买的这本书就叫Node.j ...