JavaScript基础学习笔记(五)——Array类型

数组的每一项可以保存任何类型的数据,例如第一个位置保存字符串,第二个位置保存数值,第三个位置保存对象……

概念

Array类型创建方式

var colors = new Array();
var colors = ["red", "blue", "green"];

length属性

数组的项数保存在length中,始终会返回0或更大的值,可用于从数组末尾移除项或添加新项。

var colors = ["red", "blue", "green"];
colors.length = 2;  //删除第三项
alert(colors[2]);   //undefined
colors[colors.length] = "green";    //添加第三项
alert(colors[2]);   //"green"

转换方法(toString, valuesOf)

var colors = ["red", "blue", "green"];
alert(colors.toString());   //red,blue,green
alert(colors.valuesOf());   //red,blue,green
alert(colors);  //red,blue,green

栈方法(push, pop)

push()方法可以将参数逐个添加到数组末尾,返回修改后的长度;
pop()方法可以从数组末尾移除最后一项,并返回该项;

var colors = new Array();
var count = colors.push("red","green"); //2
var items = colors.pop();   //"green"

队列方法(unshift, shift)

unshift()方法可以将参数逐个添加到数组开头,返回修改后的长度;
shift()方法可以从数组开头移除第一项,并返回该项;

var colors = new Array();
var count = colors.unshift("red","green");  //2
var items = colors.shift(); //"red"

重排序方法(reverse, sort)

reverse()方法会反转数组的顺序;
sort()方法会升序排列数据项,默认当做字符串按照ASCII排列而不是数值;
想让sort()方法按照数值顺序升、降序排列,需要自写比较函数:

var values = [0, 15, 123, 20, -1];
values.sort();  //[-1, 0, 123, 15, 20]
values.sort(function(a, b){return a - b;}); //[-1, 0, 15, 20, 123]
values.sort(function(a, b){return b - a;}); //[123, 20, 15, 0, -1]

操作方法(concat, slice, splice)

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

var colors = ["red", "green", "blue"];
var colors2 = colors.concat("yellow", ["black", "brown"]);  //["red", "green", "blue", "yellow", "black", "brown"]

slice()方法可以基于当前数组中的一个或多个项创建一个新数组,可接受一至两个参数,即要返回的起始和结束位置,新数组包括起始位置但不包括结束位置;

var colors = ["red", "green", "blue"];
var colors2 = colors.slice(1);  //["green", "blue"]
var colors3 = colors.slice(0, 2);   //["red", "green"]

splice()方法主要用途是向数组的中部插入项,可以实现删除、插入、替换三种操作,返回删除项。三个参数分别为:起始位置、删除长度、替换项(可选);

var colors = ["red", "green", "blue"];
var removed = colors.splice(0, 1);  //删除第一项 ["green", "blue"]
removed = colors.splice(1, 0, "yellow", "orange");  //从位置1开始插入两项 ["green", "red", "yellow", "orange", "blue"]
removed = colors.splice(1, 1, "white", "purple");   //插入两项删除一项 ["green", "white", "purple", "yellow", "orange", "blue"]

位置方法(indexOf, lastIndexOf)

两个方法都接收两个参数:要查找的项和表示查找起点位置的索引(可选),其中indexOf()方法从数组的开头向后查找,lastIndexOf()方法从数组的末尾向前查找。
两者都返回查找项在数组中的位置,或者在没找到的情况下返回-1。

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
numbers.indexOf(4); //3
numbers.lastIndexOf(4); //5
numbers.indexOf(4, 4);  //5
numbers.lastIndexOf(4, 4);  //3

迭代方法(every, filter, forEach, map, some)

该类方法都接收三个参数:数组项的值、该项在数组中的位置、数组对象本身。
作用都是对数组中的每一项运行给定函数,返回值相互不同:
every()方法:如果该函数对一项都返回true,则返回true;
some()方法:如果该函数对任意一项返回true,则返回true;
filter()方法:返回该函数会返回true的项组成的数组;
forEach()方法:没有返回值;
map()方法:返回每次函数调用的结果组成的数组;

var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
numbers.forEach(function(item, index, array) {
    //执行操作
});

归并方法(reduce, reduceRight)

两个方法都会迭代数组的所有项,然后构建一个最终返回的值,前者从前往后遍历,后者从后往前。
两个方法都接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值(可选)。
调用的函数接收四个参数:前一个值、当前值、项的索引、数组对象。
可用于数组求和操作:

var values = [1, 2, 3, 4, 5];
var sum = values.reduce(function(prev, cur, index, array) {
    return prev+cur;
}); //15
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值