<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>手写数组flatern,考虑多层级(即数组拍平,数组展平,数组扁平化):指将一个多维数组变为一维数组 </title>
</head>
<body>
<script>
var arr = [1,2, [3,4,50, [10,5]]] //将数组按顺序变为一维数组
function flat(arr) {
// 验证 arr中,还有没有深层数组
var isDeep = arr.some(item => item instanceof Array)//检查item是否是数组,instanceof用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。
console.log(isDeep,'isDeep')
if(!isDeep){
//如果不是深层数组
return arr
}
//是深层数组,拍平数组后,递归继续判断处理
console.log(arr,'降维处理前')
var res = Array.prototype.concat.apply([], arr) // Array.prototype.concat.apply([], arr)数组降维
console.log(res,'降维处理后')//[1,2, [3,4,50, [10,5]]] ->[1,2, 3,4,50, [10,5]]->[1, 2, 3, 4, 50, 10, 5]
return flat(res)
}
console.log(flat(arr))//[1, 2, 3, 4, 50, 10, 5]
</script>
</body>
</html>
01-30
05-31
04-18
04-07
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交