var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4]
注意第一次写上来就用了map, 是不可以的,原因是输出只有一层[ ],中间的迭代不能产生数组
Array.prototype.flat = function() { var arr = []; this.forEach((item,idx) => { if(Array.isArray(item)) { arr = arr.concat(item.flat()); //递归去处理数组元素 } else { arr.push(item) //非数组直接push进去 } }) return arr; //递归出口 }
仅针对面试题
Array.prototype.flat = function (){ this.toString().split(',').map(item=> +item ) }
过程:
toString方法,连接数组并返回一个字符串 '2,2,3,2,3,4'
'2,2,3,2,3,4'
split方法分割字符串,变成数组['2','2','3','2','3','4']
['2','2','3','2','3','4']
map方法,将string映射成为number类型2,2,3,2,3,4
2,2,3,2,3,4
最后更新于4年前