当前位置: 首页 > Web前端 > HTML

javascript高级编程中Array用法总结

时间:2023-03-28 16:51:49 HTML

引用类型是一种用来链接数据和函数的数据结构。创建对象的方法:1.newoperatorvararray=newArray();2.创建vararray=[]的文字表达式;数组检测数组:检测数组是基本类型还是引用类型转换方法:将数组转换为String或数组对象入栈方法:操作数组的后进先出方法队列方法:先进先出-out方法操作数组操作方法:数组的拼接、截取、插入、删除、替换位置方法:查找数组项,返回索引值迭代方法:操作数组每一项的方法缩窄方法:操作数组的每一项,构造1、检测数组检测数组方法的最终返回值;instanceof操作符的问题是当开发环境引入多个frameworks时,有多个全局环境时,会出现不同的Array构造函数,进而出现不同的结果。Array.isArray()方法很好地解决了这个问题。arrNameinstanceofArrayvararray=[1,2,3];console.log(arrayinstanceofArray)//trueArray.isArray(arrName)console.log(Array.isArray(array))//true2转换方法toString():return逗号分隔的字符串valueOf():返回对象toLocaleString():区别很小,如果这个方法被数组调用,那么数组中的每一项都会调用这个方法alert(value)==alert(value.toString())vararray=[1,2,3];vararrayToString=array.toString();vararrayValueOf=array.valueOf();vararrayToLocalString=array.toLocaleString();console.log(arrayToString);//1,2,3console.log(arrayValueOf);//[1,2,3]console.log(arrayToLocalString);//1,2,33栈法(LIFO:lastinfirstout)ES数组类似于数据结构的方法栈,是一种限制插入和删除项的数据结构。push():接收任意数量的参数并添加到数组末尾,并返回数组长度值pop():从数组末尾移除最后一项减少数组长度值,返回lastitemdeletedinthearray4.队列方法(FIFO:先进先出)结合push()和shift()方法可以像队列一样使用。使用unshift()和pop()可以从相反的方向模拟队列shift()移除并返回数组的第一项;unshift()从数组前面添加任意参数,返回新数组的长度5操作方法concat()复制原数组,并连接新数组,形成新的副本;vararr1=['q','w','e'];vararr2=['h','u','o'];document.write(arr1.concat(arr2));//q,w,e,h,u,oslice()有参数时,copy参数为起始位置复制到最后;当有两个参数时,复制两个数中间的数组项;如果参数为负数,则复制负值与数组长度相加得到的两个参数之间的数组项;vararr3=['h','e','l','l','o'];console.log(arr3.slice(1));//e,l,l,oconsole.log(arr3.slice(-4));//e,l,l,oarr3.slice(-4)===arr3.slice(1);//truesplice()三个参数:对应起始位置,删除项数,替换项;通过这三个参数的合理使用,可以实现删除、插入、替换等操作//从第一项中删除两项varsplice_arr1=['h','e','l','l','o'];console.log(splice_arr1.splice(1,2))//返回删除项数组["e","l"]//在第二项后插入三项oldvarsplice_arr2=['h','e','l','l','o'];varremoved=splice_arr2.splice(2,0,"K","K");console.log(splice_arr2);//["h","e","K","K","l","l","o"]console.log(removed)//返回的是一个空数组//替换varremoved=splice_arr3.splice(2,2,"P","P");console.log(splice_arr3);//["h","e","P","P","o"]console.log(removed)//返回替换值["l","l"]6Position方法返回索引值indexOf()从前往后查找lastIndexOf()从后往前查找//indexOf()从前往后查找//lastIndexOf()从后往前查找varindex_arr=['h','e','l','l','o'];varindexOf_arr=index_arr.indexOf('l');console.log('Originalarray:',index_arr)//原数组不变console.log('返回值:',indexOf_arr)//返回值为第一个找到的位置的索引值2varindex_arr2=['h','e','l','l','o'];varindexOf_arr2=index_arr2.lastIndexOf('l');console.log('Originalarray:',index_arr2)//原数组不变console.log('Returnvalue:',indexOf_arr2)//返回值是第一个找到的位置的索引值37迭代方法接收两个参数,一个是函数,一个是函数运行的作用域对象第一个参数函数接收三个参数数组项的值项,值的位置idnex,以及数组本身arrayevery()//如果返回true,则返回truevarnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];vareveryArr=numbers.every(函数(它,index,arr){if(it>9){returntrue;}})console.log(everyArr);///falsome()//如果返回true,则返回truevarsomeArr=numbers.some(function(it,index,arr){return(it>9);})console.log(someArr);///trueforEach()//无返回值varnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];varforEachArr=numbers.forEach(function(it,index,arr){varit=it*100;console.log(it)})//无返回值filter()//返回这个函数返回的项目数组true用于过滤varnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];varfilterArr=numbers.filter(function(it,index,arr){if(it>10){returnit;}})console.log(filterArr);//[65,33,21,23]//返回一个新的返回值数组。详见前端高级面试题答案map()//返回各函数的返回值varnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];varmapArray=numbers.map(function(it,index,arr){varit=it*100;返回它;})console.log(mapArray)//[100,200,300,400,500,600,700,800,900,0,900,800,700,6500,500,400,3300,2100,100,100,2300,300,400]//返回一个新的返回值数组8归约方法reduce()varnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];varallArray=numbers.reduce(function(prev,cur,index,arr){return(prev+cur);})console.log(allArray);//229reduceRight()varnumbers=[1,2,3,4,5,6,7,8,9,0,9,8,7,65,5,4,33,21,1,1,23,3,4];varallArrayRight=numbers.reduceRight(函数(prev,cur,index,arr){return(prev+cur);})console.log(allArrayRight);//229小结:经过这次总结和实践,感觉以后再遇到数组操作应该不怕了;在我的工作中使用最多的是Split(),它是一种字符串截取的操作方法。这个方法虽然是字符串方法,但是用这个总结方法还是很方便的。效果很好,就是效率有点低。如何解决这个问题。..