今天在牛客上碰到一个题,给大家亮出来,处理二维数组的
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
索性归纳下处理多维数组的方法
1、二维数组转换为一维数组
let erArr = [[1,2],[3,4],[5,6],7]
let yiArr = erArr.reduce((acc,cur) =>{
return acc.concat(cur)
})
console.log(yiArr); // [1,2,3,4,5,6,7]
2、多维数组转换为一维数组
const problem = [1, 2, 3, [4, 5, [6, 7], 8, 9]];
function flatten (arr) {
let result = []
arr.forEach(ele => {
if (Array.isArray(ele)) // 如果ele是一个数组
result.push(...flatten(ele)); //继续执行函数 相当于闭包
else
result.push(ele); // 不是 则往新数组里面push
});
return result
}
console.log(flatten(problem));//[1, 2, 3, 4, 5, 6, 7, 8, 9]