本博文源于js基础,旨在讨论如何实现扁平化数组。
问题重现
将数组扁平化是指将一个多维数组,按照原数组项的顺序转变为一维数组。
实现原理
利用递归,扁平化第一层数组时,如果项是数组,那么扁平它,如果它里面有子项也是数组,那么继续扁平。
难点:判断数组的项是否是数组
解决点:
Array.isArray(数组项)
案例效果
附上源码
<script>
var arr = [1,[2,3],[4,5],[6,[7,8]],9,[[[10,[[11,12],13],14],15,16],17],18];
function flattenArray(arr) {
var _arr = [];
for(var i=0;i<arr.length;i++) {
if(!Array.isArray(arr[i])) {
_arr.push(arr[i]);
}else {
_arr = _arr.concat(flattenArray(arr[i]));
}
}
return _arr;
}
</script>