Array数组类型
数组的每一项都可以保存任何类型的数据,创建数组的方法可以使用Array构造函数
var ary = new Array();
使用Array构造函数也可以省略new操作符
var colors = Array('red'); //创建一个包含一项,即字符串“red”的数组
创建数组也可以使用数组字面量表示法创建
var names = []; //创建一个名为names的空数组
var colors = ['red','blue']; //创建一个包含2个字符串的数组
转换方法
1.toString()
数组转字符串,数组调用toString()方法会返回一个以逗号分割的字符串,没有参数
var colors1 = ['red','blue','green'];
var colors2 = colors1.toString();
console.log(colors2); // "red,blue,green"
2.join()
join()方法可以把数组转化成字串,join()只接收一个参数,即用作分隔符的字符串,返回一个以分隔符分割的字符串
var colors1 = ['red','blue','green'];
var colors2 = colors1.join('+');
console.log(colors2); // "red+blue+green"
栈方法
3.push()
push()方法可以接收多个参数,把它们逐个插入到数组的末尾,返回值为修改后数组的长度,原数组会发生改变
var colors = ['red'];
var count = colors.push('blue','green');
console.log(count); // 3
console.log(colors); // ["red", "blue", "green"]
4.pop()
pop()的作用则与push()相反,pop()方法是从数组末尾删除最后一项,减少length值,返回被移除的项,原数组发生改变,可以用该方法获取数组最后一项
var colors = ['red','blue','green'];
var item= colors.pop();
console.log(item); // "green"
console.log(colors); // ["red", "blue"]
队列方法
栈数据的访问规则是后进先出,而队列结构的访问规则是先进先出。队列在列表的末端添加项,从列表的前端移除项。
5.shift()
shift()方法能够移除数组的第一项,并且返回该值,原数组的length长度减1,可以用该方法获取数组的第一项
var colors = ['red','blue','green'];
var item = colors.shift();
console.log(item); // "red"
console.log(colors); // ["blue", "green"]
6.unshift()
unshift()与shif()的用途相反,可以在数组的前端增加多项并返回新数组的长度,原数组发生改变
var colors = ['red'];
var count = colors.unshift('blue','green');
console.log(count); // 3
console.log(colors); // ["blue", "green", "red"]
重排序方法
7.reverse()
reverse()方法可以实现数组的翻转
var num = [1,2,3,4,5];
console.log(num.reverse()); //[5,4,3,2,1]
8.sort()
在默认情况下,sort()方法按排列数组项,小的在前,大的在后。sort()方法会调用toStriing()方法,然后比较得到的字符串,即使数组中每一项都是数值,比较的也是字符串
var num = [0,1,5,10,15];
console.log(num.sort()); //[0, 1, 10, 15, 5]
因此sort()方法可以接收一个比较函数作为参数
var num = [0,1,5,10,15];
num = num.sort(function compare(a,b){
return a-b
});
console.log(num); // [0, 1, 5, 10, 15]
如果要产生降序的结果,只需要把返回值的两个参数换一下位置就可以
var num = [0,1,5,10,15];
num = num.sort(function compare(a,b){
return b-a
});
console.log(num); // [15, 10, 5, 1, 0]
操作方法
9.concat()
cancat()可以实现数组的拼接,可以传递一到多个数组,如果传递的不是数组,这些值就会简单的添加到结果数组的末尾。如果concat()没有传递参数,则可以实现对原数组的复制
var colors = ['red','blue'];
var colors2 = colors.concat('yellow',['black','white']);
var colors3 = colors.concat(); //实现对原数组的复制
console.log(colors2); // ["red", "blue", "yellow", "black", "white"]
console.log(colors3); // ["red", "blue"]
console.log(colors); // ["red", "blue"]
10.slice()
slice()可以接收一到两个参数,如果只有一个参数时,返回从该参数开始到当前数组末尾的所有项,两个参数时,返回从第一个参数开始到第二个参数之间的所有项,不包括结束位置的项,即包前不包后。slice()方法没有传递参数时可以实现对原数组的复制
var colors = ['red','blue','yellow','black','white'];
var colors2 = colors.slice(1); //一个参数
var colors3 = colors.slice(1,3); //两个参数
var colors4 = colors.slice(); //实现对原数组的复制
console.log(colors2); // ["blue", "yellow", "black", "white"]
console.log(colors3); // ["blue", "yellow"]
console.log(colors4); // ["red", "blue", "yellow", "black", "white"]
console.log(colors); // ["red", "blue", "yellow", "black", "white"]
11.splice()
splice()方法比较强大,可以实现数组的插入,删除和替换
- 插入
可以向指定位置插入多项,需要3个参数:起始位置,0,要插入的内容。如果要插入多项,可以再继续传入要插入的项返回一个空数组
var colors = ['red','blue'];
var values= colors.splice(1,0,'green','black');
console.log(colors); // ["red", "green", "black", "blue"]
console.log(values); // []
- 删除
可以从指定位置开始删除一到多个,需要两个参数:要删除第一项的位置,要删除的个数。返回被删除的内容,以一个行数组的形式返回
var colors = ["red", "green", "black", "blue","yellow"];
var values= colors.splice(1,3);
console.log(colors); // ["red", "yellow"]
console.log(values); // ["green", "black", "blue"]
- 替换
从指定位置删除多个,并同时插入多个,需要3个参数:起始位置,要删除的项数,要插入的内容。返回被删除的内容,以一个新数组的形式返回。
var colors = ["red", "green", "black", "blue","yellow"];
var values= colors.splice(1,2,"pink","purple","white");
console.log(colors); // ["red", "pink", "purple", "white", "blue", "yellow"]
console.log(values); // ["green", "black", "blue"]
如果splice()方法只传递一个参数“0”,可以实现对原数组的复制
var colors = ["red", "green", "black", "blue","yellow"];
var values = colors.splice(0);
console.log(values); // ["red", "green", "black", "blue", "yellow"]
位置方法
12.indexOf()
indexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从前往后查找,查找到则返回对应位置索引,没有查找到返回-1。
var nums = [1,2,3,4,5,6];
var item1 = nums.indexOf(4);
var item2 = nums.indexOf(8); //查找数组中不存在的项
console.log(item1); //3
console.log(item2); //-1
13.lastIndexOf()
lastIndexOf()接收两个参数:要查找的内容和查找的起点位置的索引(可选)。indexOf()查找时是从末尾往前查找,查找到则返回对应位置索引,没有查找到返回-1。
var nums = [1,2,3,4,5,6];
var item1 = nums.lastIndexOf(2);
var item2 = nums.lastIndexOf(8); //查找数组中不存在的项
console.log(item1); //1
console.log(item2); //-1
迭代方法
14.forEach()
forEach()可以实现对数组的遍历,没有返回值,再回调函数中可以操作数组中的每一项及其对应的索引
var nums = [1,2,3,4,5,6];
nums.forEach(function (item,index,array){
//执行某些操作
//item为遍历的数组的每一项
//index为为遍历的数组的每一项对应的索引
//array为原数组
})
15.map()
map()也可以实现对数组的遍历,有返回值,回调函数可以返回一个数组
var nums = [1,2,3,4,5,6];
var mapResult = nums.map(function (item,index,array){
return item
})
console.log(mapResult); // [1,2,3,4,5,6]