数组对象新增操作和新增方法( 数组扁平化flat和includes以及面试题:数组去重)

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)

预览效果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值