1、flat()嵌套数组转一维数组,返回值 是处理后的新数组
数组扁平化flat操作的主要目的:降维(降低数组维度
// 1、flat()嵌套数组转一维数组,返回值 是处理后的新数组
// hbuilderx 内置浏览器,不能解析识别es6的这个新方法
console.log([1,2,[3,4]].flat());
// 指定转换的嵌套层数
// 把最内层的数组还保留着,将其变成一个二维数组
var arr = [1, [2, [3, [4, 5]]]];
var a = arr.flat(2);
console.log(a);
// 不管嵌套多少层
// Infinity 无穷
// 把数组无穷向下降维,最低能降到一维数组
var b = [1, [2, [3, [4, 5]]]];
var c = b.flat(Infinity);
console.log(c);
// 自动跳过空位
// 如果数组中有空位 ,我们在做将为操作的时候,会把空位直接跳过(也就是说把空位上的内容直接删掉)
var d = [1,[2, ,3]];
var e = d.flat();
console.log(e);
预览效果
2、flatMap()先对数组中每个元素进行了的处理,再对数组执行 flat() 方法。
注意:flatMap() 只对 一维数组中每个元素 进行处理,对 多维数组进行处理,会生成 NaN。
// flatMap() 只对 一维数组进行操作
var d = [1,5,6,3,4];
console.dir('原数组');
console.log(d);
// 注意:以下三种方法都正确
// var e = d.flatMap((item)=>{
// return item*2
// });
// var e = d.flatMap((item)=>{
// return [item*2]
// });
var e = d.flatMap(item=>item*2);
console.dir('执行flatMap操作之后的数组');
console.log(e);
预览效果
3、includes()包含
includes() 方法用于判断数组中是否包含指定的元素。(数组是否包含指定值。)
如果找到匹配的元素则返回 true,否则返回 false。
注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。
// includes()方法用于判断数组中是否包含指定的元素,数组是否包含指定值
// 如果找到匹配的元素,则返回true,否则返回 false
var a = [100,2,3,4,6,5,5];
// 参数1:包含的指定值
var r = a.includes(300);
console.log(r);
// 参数2:可选,搜索的起始索引,默认为0
// 我从那个地方去检索,有没有 第一个参数 指定的20这个内容
var r1 = a.includes(20,4);
console.log(r1);
}
预览效果
数组去重(面试题)
let a = [1,2,3,2,3,4,4,5,6,6,8,1,2,3];
console.log(a.indexOf('3'));
// 封装到函数里面
function removal(arr){
var temp = [];
for(let i=0;i<=a.length-1;i++){
console.log(i+"====>"+a[i]);
// 去数组中 检索 当前这一项内容的索引值
console.log(a.indexOf(a[i]));
if(a.indexOf(a[i]) == i){
temp.push(a[i])
}
}
console.log(temp);
return temp
}
removal(a)
预览效果