(17)es6——Array原型新增方法from,find,findIndex和es7新增includes以及es10新增flat,flatMap

from()

//将伪数组和可遍历的对象转换为数组
//属性名必须是数字0开始不然访问不到
var obj = {
	0: 1,
	1: 2,
	2: 3,
	length: 3
}
console.log(Array.from(obj));

find()

// 用于找出第一个符合条件的数组成员, 如果没有找到返回undefined
let arr = [1,23,4,5];
// find接收一个函数,函数有两个形参,一个接收值,一个接收索引,return中写判断条件
let a = arr.find((value,index) => value == 4);
console.log(a);//4

在这里插入图片描述

findIndex()

// 用于找出第一个符合条件的数组成员的位置, 如果没有找到返回-1
let arr = [1,23,4,5];
let a = arr.findIndex((value,index) => value == 4);
let b = arr.findIndex((value,index) => value == 6)
console.log(a);//2
console.log(b);//-1

在这里插入图片描述

includes()

// 判断某个数组是否包含给定的值,返回布尔值。
let arr = [1,23,4,5];
let a = arr.includes(2);
let b = arr.includes(1);
console.log(a);//false
console.log(b);//true

在这里插入图片描述

flat

会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
var newArray = arr.flat([depth]);
指定要提取嵌套数组的结构深度,默认值为 1。

怎么理解这个深度?大家可以看我的es5实现es6专栏里面的文章
实现flat

const arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat()); // [1, 2, 3, 4]
const arr2 = [0, 1, 2, [[[3, 4]]]];
console.log(arr2.flat(1)); // [0, 1, 2, [[3,4]]]
console.log(arr2.flat(2)); // [0, 1, 2, [3, 4]]

flat() 方法会移除数组中的空项:

var arr4 = [1, 2, , 4, 5];
arr4.flat(); // [1, 2, 4, 5]

flatMap

flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与map连着深度值为0的flat几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。

注意mdn文档错误
在这里插入图片描述

语法
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // return element for new_array
}[, thisArg])
参数
callback
可以生成一个新数组中的元素的函数,可以传入三个参数:
	currentValue
	当前正在数组中处理的元素
	index可选
	可选的。数组中正在处理的当前元素的索引。
	array可选
	可选的。被调用的 map 数组
	thisArg可选
	可选的。执行 callback 函数时 使用的this 值。
返回值
 一个新的数组,其中每个元素都是回调函数的结果,并且结构深度 depth 值为1。
let arr = [1,2,3,[4,5]];
arr.flatMap((item,index,array,thisArg)=>{
	console.log(item);
	console.log(index);
	console.log(array);
	console.log(thisArg);
})

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuJie_Boom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值