1.js中定义了数组,数组也是对象(引用数据类型)。可以理解为一组数据的集合。2.数组的特点数组的每一项都可以存储任意类型的数据。3、创建数组的基本方法(2种)3.1构造函数newArray()/****关键字new****/letlist0=Array();letlist1=newArray();/****指定创建数组时数组的长度****//****此时数组list2的长度为10,数组的每一项都是undefined。****/letlist2=newArray(10);3.2文字表示法letlist=['red',1,true,null,undefined,'pink'];letlist=[];//创建一个长度为0的空数组。让日期=['1-10','1-11',,,];//数组长度为4,dates[2]dates[3]的值为undefinedconsole.log(dates);//["1-10","1-11",空×2]4.通过索引访问数组中的值/****通过索引修改对应的值****/letstudents=['小明','小华','小李']students[1]='小小华姐';console.log(students);//["小明","小花的姐姐","小李"]/****如果access下标(索引)超出数组长度,则值为undefined****/console.日志(学生[5]);//undefined/****如果一个值的索引超过了数组的长度,那么数组会自动增加到索引的长度加上1****/students[5]='Ms.刘';console.log(学生);//["小明","小华","小李",空×2,"刘老师"]/****数组最后一项的索引等于length-1****//****反之,数组的长度等于数组最后一项的索引加1****/letnums=[1,2,8,4];console.log(nums[nums.length-1]);//4个数组最多可以包含4294967295个项目。5.检测数组的方法5.1Array.isArray(variable)letlist=['a','b'];letp={title:'thisisobejct'}console.log(Array.isArray(list));//trueconsole.log(Array.isArray(p));//false5.2variableinstanceofArray这个方法只针对全局执行环境。console.log(列表instanceof数组);//trueconsole.log(pinstanceofArray);//false5.3Object.prototype.toString.call(variable)console.log(Object.prototype.toString.call(list));//'[对象数组]'console.log(Object.prototype.toString.call(p));//'[objectObject]'5.4variable.constructor===Arrayconsole.log(list.constructor===Array);//trueconsole.log(p.constructor===Array);//falseconsole.log(p.constructor===Object);//真6。数组的常用方法1push()在数组末尾添加(一个或多个数据)2pop()在数组末尾删除一个数据3unshift()在开头添加(一个或多个数据)数组的4shift()删除数组的第一项并返回该项。5reverse()反转数组的顺序。返回排序后的数组。6sort()sort方法调用每个数组项的toString()方法,然后比较结果字符串。返回排序后的数组。让数字1=[1,5,2,3];安慰。日志(数字1.排序());//[1,2,3,5]让数字2=[10,5,12,13];安慰。日志(numbers2.sort());//[10,12,13,5]/********可以在sort()方法中通过比较来排序******/letnumbers3=numbers2.sort((a,b)=>{returna-b;//如果b-a,结果将相反})等价于=>numbers2.sort((a,b)=>{returna-b;})console.log(numbers2)//[5,10,12,13]console.log(numbers3);//[5,10,12,13]7concat()该方法创建一个当前数组的副本,然后将参数一个一个追加到副本的末尾,最后返回副本。letnumArray=['one','two'];letlist=numArray.concat('three',['6-1','6-2']);console.log(list);//["一”、“二”、“三”、“6-1”、“6-2”]console.log(numArray);//["one","two"]8slice()不影响原数组。letfruit=['apple','banana','strawberry','pears'];/************一个参数:截取从指定位置到数组末尾的所有项************/fruit.slice(1);//"banana","strawberry","pear"]/************两个参数:截取起始位置和结束位置之间的Items,但不包括结束位置*************/fruit.slice(0,2);//["apple","banana"]ifslice如果方法中有一组负数,则通过负数加上数组的长度来确定位置:比如如果数组的长度为5,则slice(-2,-1)等价于slice(3,4)。9splice()letnumbers=['1','3','5','7','9'];/***delete:删除任意个数*@params第一个参数起始位置*@params第二个参数的结束位置(但不包括结束位置)*/*numbers.splice(1,2)//["3","5"]/***Insert:向指定位置插入任意数字positionItem*@params第一个参数起始位置*@params第二个参数是要删除的item个数*@params第三个参数是要插入的item(多个)*/numbers.splice(2,0,'红色','粉红色')console.log(数字);[“1”、“3”、“红色”、“粉色”、“5”、“7”、“9”]console.log(numbers);//["1","7","9"]/***替换:在指定位置插入任意个数,同时删除任意个数*@params第一个参数起始位置*@params第二个参数要删除的项数*@params第三个参数要插入的任意项数*/numbers.splice(1,1,'replacedvalue')console.log(numbers);//["1","replacedvalue","5","7","9"]10indexOf()默认从索引0向后搜索,如果找到则返回正确的索引,否则返回-1。letlist=['13','red','null',20,-3];console.log(list.indexOf('null'));//2console.log(list.indexOf(-3));//4console.log(list.indexOf(10));//-1/***从指定位置开始查找*@params第一个参数查找item*@params第二个参数查找起始位置*/console.log(list.indexOf('null',3));//-1console.log(list.indexOf('null',1));//211lastIndexOf()和indexOf()方法找方向相反。12every()返回一个布尔值。对原始数组没有影响。让成绩=[50,60,75,80,93];让result1=grades.every((item,index,array)=>{returnitem>=60;});控制台日志(结果1);//falseletresult2=grades.every((item,index,array)=>{returnitem>=30;});控制台日志(结果2);//true13filter()过滤掉满足指定条件的项目。对原始数组没有影响。让成绩=[50,60,75,80,93];让列表=成绩。filter((item,index,array)=>{returnitem>=60;});安慰。日志(列表);//[60,75,80,93]13forEach()这个方法没有返回值。对原始数组没有影响。让k=[1,2,3];让j=[];k.forEach((item,index,array)=>{j.push(item*2);});console.log(k);//[1,2,3]console.log(j);//[2,4,6]14map()对原数组没有影响。让n=[5,10,20];让v=n.map((item,index,array)=>{returnitem*2;});console.log(n);//[5,10,20]console.log(v);//[10,20,40]15some()返回一个布尔值。对原始数组没有影响。任何一项只要满足条件就返回true,否则就返回false,这与方法every()相反。让o=[1,2,12,16,18];让result1=o.some(item=>{returnitem>20;});console.log(result1);//falseletresult2=o.some(item=>{returnitem>10;});控制台日志(结果2);//true16reduce()此方法迭代数组中的所有项目。对原始数组没有影响。//求数组中每一项的和letu=[1,2,3,4,5];letvalues=u.reduce((pre,cur,index,array)=>{returnpre+当前;});控制台日志(值);//1517reduceRight()此方法遍历数组中的所有项目。它与方法reduce()的迭代方向相反。
