昨天笔试遇到一个数组扁平化的问题,后来被提醒有一个很简便的方法,toString方法。
平时用到的地方可能只是在向后台传数组的时候,用的不是json格式需要特殊化处理,比如一些批量删除的功能,在以前工作的公司就是接受一个字符串,id通过逗号分隔,再传数组的时候用了toString。当然也有另一种传数组的方法,使用qs库调用里面提供的qs.stringify()
那回到数组扁平化的题
const a = [1,2,2,3,[4,6],[7,7,8,[9,10]],[5]]
将这个数组扁平化去重升序:
最简便的方法:
[...new Set(a.toString().split(',').map(item => +item))].sort((a,b) => a-b)
我当时的想法是遍历整个数组,如果当前元素是数组就递归,再把元素放进去,再判断是否有跟数组中重复,再要插入排序,这里也贴一下代码
var newArr = []
function parseArr(arr) {
arr.forEach(el => {
if(Array.isArray(el)) {
parseArr(el)
}else{
newArr.indexOf(el) === -1 && newArr.push(el)
for(let i=newArr.length - 2; i>=0 && newArr[i] > newArr[i+1];i--) {
let temp = newArr[i]
newArr[i] = newArr[i+1]
newArr[i+1] &#