前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Array类型

Array类型

作者头像
河岸飞流
发布2019-08-09 17:08:03
7290
发布2019-08-09 17:08:03
举报
文章被收录于专栏:开发杂记开发杂记

Array类型

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

创建数组

方式1:使用Array构造函数

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

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

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

设置和读取数组

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

length属性

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

代码语言:javascript
复制
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";

检测数组

代码语言:javascript
复制
if(Array.isArray(value)) {
    //对数组执行某些操作
}

转换方法

代码语言:javascript
复制
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()方法,则可以使用不同的分隔符来构建这个字符串。

代码语言:javascript
复制
//join()方法接收一个参数,即分隔符
var books = ["English", "math"];
console.log(books.join(",")); //English,math
console.log(books.join("||")); //English||math 

栈方法

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

代码语言:javascript
复制
var books = new Array();
var count = books.push("English", "math");
console.log(count); //2
count = books.push("Chinese");
console.log(count); //3

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

代码语言:javascript
复制
var item = books.pop();
console.log(item); //Chinese
console.log(books.length); //2

队列方法

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

代码语言:javascript
复制
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()能在数组前端添加任意个项并返回新数组的长度

代码语言:javascript
复制
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()翻转数组项的顺序

代码语言:javascript
复制
var num = [1, 4, 3, 5, 2];
num.reverse();
console.log(num); //[2, 5, 3, 4, 1]

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

代码语言:javascript
复制
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()方法可以基于当前数组中的所有项创建一个新数组

代码语言:javascript
复制
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()方法能够基于当前数组中的一个或者多个项创建一个新数组

代码语言:javascript
复制
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()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Array类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档