这一篇应该说是扫盲吧,或者说给自己的无知长个记性???
一开始听到数组扁平化,这形容词真让我懵逼了一下。我是真没想到降维那里去,最后了解了一下
扁平化就是将多维数组转换为一维数组:
[1,[2,3,[4,[5,6]]]]
↓
[1,2,3,4,5,6]
转换的方法:
flat()
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
说白了就是遍历数组中每一个元素,最后再合并成一个新的数组
let a=[1,[2,3,[4,[5,6]]]];
let b=a.flat(3);
console.log(b);//[1, 2, 3, 4, 5, 6]
对于未知维度的数组就可以使用正无穷
Javascript中,超出 1.7976931348623157E+103088 的数值即为Infinity,小于 -1.7976931348623157E+103088 的数值为无穷小。
let a=[1,[2,3,[4,[5,6]]]];
let b=a.flat(Infinity);
console.log(b);//[1, 2, 3, 4, 5, 6]
偷偷说无论已知还是未知维度我都是用infinity,效率是一样的
flat也可以去除数组空项:
let a=[1,[2,3,[4,[5,6]]],,];
let b=a.flat(Infinity);
console.log(b);//[1, 2, 3, 4, 5, 6]
数组空项很少出现,但还是要记一下(是去除空项不是空字符串哦)
还有一个不得不说在渡一教育看到的一道题:
在一个二维数组中,每一个一维数组长度相同,每一行按照从左到右顺序递增,每一列按照从上往下顺序递增。请完成一个函数输入一个这样的二维数组,和一个整数,判断数组中是否含有该整数
说明白点就是检索一个二维数组是否包含某一个元素。。。但当时我不明白的是:每一行按照从左到右顺序递增,每一列按照从上往下顺序递增
百度了一下就是:
let ary=[
[1,2,3,4],
[2,3,4,5],
[3,4,5,6]
]
显而易见。。我是真没想到那里去。。。我还以为很深奥。。。。。