JS之Array

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值