前言数组是JavaScript中常见的数据类型之一。我在这里简单记录和总结它的一些操作方法。今天主要介绍:如何找出数组中重复/不重复的元素数组展平方法找出数组中的重复元素或不重复元素双循环+切片找出重复元素。虽然只要求找出重复的元素,但是要注意顺便去掉重复的,否则外层循环还是会检查重复的元素;使用flag记录重复次数,只有第一次重复时才将元素放入新数组。函数搜索(arr){letres=[]letflag=0for(leti=0;iitem[1]>1).map(item=>item[0])//查找不重复的元素,即数ofoccurrences等于1return[...map.entries()].filter(item=>item[1]==1).map(item=>item[0])//找到重复次数最多的元素return[...map.entries()].filter(item=>item[1]==Math.max(...map.values())).map(item=>item[0])}数组展平/array降维二维数组,以[[],[{a:1}],[],[3,4],5]为例,降维后,[{a:1},3,4,5]得到二维数组:双循环需要检查是否每个元素都是数组functionflatten(arr){constres=[]for(让i=0;iacc.concat(cur),[])}二维数组:expansion/apply+concat通过扩展原数组或者作为apply函数的第二个参数将数组转化为参数列表flatten(arr){//return[].concat([],arr)return[].concat(...arr)}多维数组,以下面的数组为例:constarr=[1,[2,[3],[4,5,6],[7,8,9],10,11],12,13,[15,16,17]]降维后,[1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17]多维数组:toString+split数组降维可以看成去掉所有括号,数组的toString方法正好可以做到,然后调用string的split可以将string转回数组,但是这种方法的局限性很大,需要a的数据类型rray元素要相同。functionflattern_numberArray(arr){returnarr.toString().split(",").map(x=>Number)}多维数组:forEach+递归函数flatten(arr){constres=[]arr.forEach(item=>{if(Array.isArray(item)){flatten(item)}else{res.push(item)}})returnres}多维数组:reduce+recursion同样,上面的过程是一种merge,你可以使用reduce完成。需要注意的是reduce的回调函数必须返回一个数组,所以不要使用push函数flatten(arr){returnarr.reduce((acc,cur)=>{if(Array.isArray(cur)){return[...acc,...flatten(cur)]}else{return[...acc,cur]}},[])}多维数组:while+some只要数组中有数组,使用concattogive这个数组被降维了。这个方法可以不用递归functionflatten(arr){while(arr.some(item=>Array.isArray(item))){arr=[].concat(...arr)}returnarr}不确定维度的array:平面数组降维,直接用前面说的flat最简单。默认传参数1,表示降维一次;可以传入参数Infinity,实现完全降维,最终得到一维数组。~~本文到此结束,感谢阅读!~学习有趣的知识,认识有趣的朋友,塑造有趣的灵魂!大家好,我是〖编程三昧〗的作者王隐,我的公众号是《编程三昧》,欢迎关注,希望大家多多指教!