1.Array的特性:
数组的每个元素可以是不同的类型;
数组的大小是动态的;
2.Array的创建:
以下四种方式均可
var music = new Array(2);
var music = new Array('work','no body');
var music = Array(2);
var music = ['work','no body'];
3.Array元素赋值:
以上面创建的数组为例:
music[1] = '的青春';
music[2]='玫瑰';
此时music的length的值为3;music为['work','的青春','玫瑰'];
(1)自动为数组追加元素:music[music.length]='冰雨';music[music.length]='笨小孩';
music为['work','的青春','玫瑰','冰雨',‘笨小孩’],长度为5,此时,music[5]的值为undefined;
(2)可通过数组的length属性移除和增加数组元素,music.length=1,music为['work'],此时music[1]=undefined;
4.校验参数是否为数组:
value.instanceof Array;
Array.isarray(value){注:IE9+,firefox4+,safari5+,opera10.5+,chrome}
5.转换字符串:
var music = new Array('work','的青春',‘玫瑰’);
music.toString();//'work','的青春',‘玫瑰’;
music.valueof();//'work','的青春',‘玫瑰’;
music.join('||');//'work'||'的青春'||‘玫瑰’;
6.常用函数:
push(x0,x1,......,xn):数组末尾添加任意数量元素,并返回此时数组的长度;
var count = music.push('如果你爱我','我');//5
music.toString();//'work','的青春',‘玫瑰’,'如果你爱我','我'
pop():数组移除末尾元素,并返回移除元素,长度减一;
var item = music.pop();//‘我’
music.length;//4
shift():数组移除第一个选项并返回该项,长度减一;
var item = music.shift();//'work'
music.length;//3
unshift(x0,x1,......,xn):数组第一个位置添加任意数量的元素,并返回此时数组的长度;
var count = music.unshift('dura','Despacito');//5
music.toString();//'dura','Despacito','的青春',‘玫瑰’,'如果你爱我'
reverse():反转数组;
music.reverse();//'如果你爱我',‘玫瑰,'的青春','Despacito','dura'
sort():升序重排数组(排序规则按照字符串的规则‘10’在‘5’前面);
var values = [0,1,5,10,15];
valus.sort();//[0,1,10,15,5]
concat(元素1,元素2...):基于当前数组新创建一个数组,参数可以是元素亦可以是数组亦可以是参数和数组;
var music2 = music.concat('la la la','loca');//music2 = ['如果你爱我',‘玫瑰,'的青春','Despacito','dura','la la la','loca']
var music3 = music.concat('la la la',['loca','try everything']);//music3=['如果你爱我',‘玫瑰,'的青春','Despacito','dura','la la la','loca','try everything']
slice(起始,结尾):返回数组某段的值,并返回新数组;(范围:大于等于起始,小于结尾)
var music4 = music3(1,3);//music4=['玫瑰','的青春']
splice(进行操作的起始位置,要删除的项的数量,要插入的项1...要插入的项n):插入项,返回数组;
注:插入到起始位置之前
var colors = ['red','green','blue'];
var remove1 = colors.splice(0,1);//colors=['green','blue'] remove1 = ['red']
var remove2 = colors.splice(1,0,'yellow','orange');//colors=['green','yellow','orange','blue'] remove2空数组
var remove3 = colors.splice(1,1,'red','pure');//colors=['green','red','pure','orange','blue'] remove3=['yellow']
indexOf(查找项,查找起始位置):从起点查找,返回项的位置;
lastIndexOf(查找项,查找起始位置):从终点查找,返回项的位置;
var number = [1,2,3,4,5,4,3,2,1];
alert(number.indexOf(4));//3
alert(number.lastIndexOf(4));//5
alert(number.indexOf(4,4));//5
alert(number.lastIndexOf(4,4));//3
注:参数比较为严格相等(==)
var person = {name:'jack'};
var people = [{name:'jack'}];
var morepeople = [person];
alert(people.indexOf(person));//-1
alert(morepeople .indexOf(person));//0
数组迭代:every(),filter(),forEach();map();some();
迭代方法每个方法都接收两个参数:数组中每个元素都要执行一次的函数和(可选的)该函数的作用域对象,执行的函数的三个参数依次为数组元素的值、元素在数组中的位置、数组对象本身;
every():对数组的每一项运行给定的函数,每一项函数执行的结果都为true,返回true;
some():对数组的每一项运行给定的函数,其中一项函数执行的结果为true,返回ture;
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item, index, array){
return (item > 2);
});
alert(everyResult); //false
var someResult = numbers.some(function(item, index, array){
return (item > 2);
});
alert(someResult); //true
filter():对数组的每一项运行给定的函数,返回函数执行结果为true的元素组成的数组;
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item, index, array){
return (item > 2);
});
alert(filterResult); //[3,4,5,4,3]
map():对数组的每一项运行给定的函数,返回函数执行结果组成的数组;
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
foreach():对数组的每一项运行给定的函数,没有返回值;
数组合并:reduce(),reduceRight();
合并方法传两个参数:每执行一次合并要执行的函数和(可选)作为缩小的初始值,执行函数包含4个参数依次是前一个值、当前值、项的索引和数组对象;
reduce():循环执行函数,每次执行的结果作为下一次循环的前一个值,返回循环所有结果的最终运算结果;
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;//1+2,3+3,6+4,10+5
});
alert(sum);//15
reduceRight():和reduce()原理相同,只不过运行顺序是相反的;
var values = [1,2,3,4,5];
var sum = values.reduceRight(function(prev, cur, index, array){
return prev + cur;//5+4,9+3,12+2,14+1
});
alert(sum);//15