ES6知识点整理Array常用扩展的应用

ES6—数组方法的扩展 一、概述 ES6提供了很多高效的数组方法,详解如下所示。 二、详解 方法1:filter方法 filter方法不会改变原数组。 filter方法的作用是过滤目标数组,遍历数组的所有元素,并返回一个新数组,该数组包含所有符合筛选条件的数组元素,如果没有符合条件的数组元素则返回空数组。注意,filter方法不会检测空数组。 filter方法的语法如下所示。 array.filter((currentValue, index, arr) => { }, thisValue) filte 阅读详情

在ES6中又对Array扩展了不少方法,下面我们来看下

from方法

将伪数组转换为数组

let obj = {
  '0':'h',
  '1':'i',
  'length':2
};
let arr = Array.from(obj);
console.log(Array.isArray(arr)); // true
console.log(arr); // ["h", "i"]

通过第二个回调参数对值进行再加工处理

let obj = {
  '0':'h',
  '1':'i',
  'length':2
};
let arr = Array.from(obj,function(item, index) {
  // 对返回的值进行处理
  return item + '...'
});
console.log(arr); // ["h...", "i..."]

可转换实现了interator接口的类型如:set和map 为数组

var set = new Set(['me','book','Joh']);
var arr = Array.from(set);
console.log(arr); // ["me", "book", "Joh"]

其他:使dom节点NodeList转化为数组

of方法

var arr = new Array(5); // 数组之前的这种形式和字符串等类型的操作不统一,得到的只是长度为5的空数组
console.log(arr); // [empty × 5]

var arr2 = Array.of(12);
console.log(arr2);// [12]

var arr3 = Array.of(12,3,5,22);
console.log(arr3); // [12, 3, 5, 22]

使用of方法,直接获得数组

find方法

find 查找符合函数的标准,返回一个真值,第一个就符合 :

var arr = [undefined, 22,33,44];
var val = arr.find(function () {
  return true;
});
console.log(val); // undefined 始终返回第一个值,无论是0,'', NaN, undefined, null 都返回第一个值

返回false, 将没有一个符合,最终结果是undefined

var arr = [20, 22,33,44];
var val = arr.find(function () {
  return false;
});
console.log(val); // undefined

通过find参数中的value来判断

var arr = [21, 22, 33, 44];
var val = arr.find(function (value, index, arr) {
  return value > 22;
});
console.log(val); // 33

findIndex方法

和find方法几乎一样,就是返回值是索引

var arr = [21, 22, 33, 44];
var val = arr.findIndex(function (value, index, arr) {
  return value > 22;
});
console.log(val); // 2

findIndex可以解决indexOf无法解决的问题:

var arr = [NaN];
var res1 = arr.indexOf(NaN);
var res2 = arr.findIndex(function (v) {
  return Object.is(NaN, v);
});

console.log(res1); // -1 未找到
console.log(res2); // 0 找到

copyWithin方法

copyWithin 操作原数组 (起始索引,拷贝值的索引起点,拷贝值的索引终点), 将拷贝的值替换原值 ,注意左闭右开

// 替换多个值
var arr1 = [1,2,3,4,5,6,7];
arr1.copyWithin(1,5,7);
console.log(arr1); //  [1, 6, 7, 4, 5, 6, 7]

// 替换一个值的不同表示1
var arr2 = [1,2,3,4,5,6,7];
arr2.copyWithin(2,5,6); // 将6替换3
console.log(arr2); //  [1, 2, 6, 4, 5, 6, 7]

// 替换一个值的不同表示2 从后面数,最后一个是-1,倒数第二个是-2
var arr3 = [1,2,3,4,5,6,7];
arr3.copyWithin(2,-2,-1); 
console.log(arr3); // [1,2,6,4,5,6,7]

// 替换一个值的不同表示3 前后混合使用
var arr3 = [1,2,3,4,5,6,7];
arr3.copyWithin(2,5,-1); 
console.log(arr3); // [1,2,6,4,5,6,7]

fill方法

fill(默认填充值,填充起始索引,填充结束索引) , 注意区间的左闭右开

var arr1 = [1,2,3,4,5,6,7];
arr1.fill(10);
console.log(arr1); // [10, 10, 10, 10, 10, 10, 10]

var arr2 = [1,2,3,4,5,6,7];
arr2.fill(10,2,5); 
console.log(arr2); // [1, 2, 10, 10, 10, 6, 7]

includes方法

includes 用于查找是否包含某种元素

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN];
console.log('%s', arr1.includes('c')) // true
console.log('%s', arr1.includes('z')) // false
console.log('%s', arr1.includes(NaN)) // true

函数的第二个参数表示判断的起始位置 :

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN];
console.log('%s', arr1.includes('d', 1)) // true
console.log('%s', arr1.includes('d', 3)) // true
console.log('%s', arr1.includes('d', 4)) // false

第二个参数也可以是负数,表示从右数过来第几个,但是不改变判断搜索的方向,搜索方向还是从左到右

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.includes('k', -1)); // false
console.log('%s', arr1.includes('k', -2)); // true
console.log('%s', arr1.includes('i', -3)); // false
【前端面试必知】ES6数组新增了哪些扩展 本系列主要整理前端面试中需要掌握的知识点。本节介绍ES6数组新增的扩展,包括扩展运算符、构造函数的新增方法、实例对象新增方法、数组的空位、排序稳定性。 阅读详情

相关推荐

微信小游戏马甲包过审策略

微信小游戏马甲包是指同一套游戏源码使用不同的名字包装上线微信小游戏平台。微信官方是不允许这样的方式上线小游戏,但是游戏运营方为了买量的需求,往往采用不同包装来,以获取更多流量。另外游戏发行以后,多家联运渠道都需要上线同一款小游戏,也存在马甲包的情况。 如果马甲包游戏源码上传时没有经过特殊处理,就会打回小游戏内容涉嫌代码包内容侵权,同时信用分-5(信用分越低,提审时间越长,一般保持在90分及以上才能保证快速审核)。微信官方回复结果如下: 目前,微信小游戏审核相比苹果商店审核还不算严格,基本上能突破代码

aqi22221的博客 4508

es6 遍历数组对象获取所有的id_ES6 数组 (Array) 集合 (Set) 使用

数组扩展数组扩展运算符数组扩展运算符(spread)是三个点(...)。它好比rest参数的逆运算,将一个数组转为用空格分隔的参数序列。console.log(...[1, 2, 3]); // 1 2 3console.log(1, ...[2, 3, 4], 5); // 1 2 3 4 5⚠️rest参数是运用在函数参数上的,将函数参数转换为数组的形式,如下:function fn(...v...

weixin_42316073的博客 2294

【Windows】 解决联想为主的所有自带摄像头(integrate camera)打不开的毛病(特别点名小新、thinkbook、thinkpad、y7000...)

解决联想系列电脑打不开自带摄像头的问题

Iamruzi的csdn博客 3万+

2024年最新ES6-ES11学习入门,2024年最新前端面试题整理

阿里十分注重你对源码的理解,对你所学,所用东西的理解,对项目的理解。开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】函数参数默认值8、rest参数概述:ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments;rest 参数必须要放到参数最后rest参数9、扩展运算符介绍:… 扩展运算符能将数组转换为逗号分隔的参数序列;『扩展运算符』 可以对 集合实现了 iterator接口的对象操作扩展运算符(spread)也是三个点(…)。

2401_84619467的博客 996

【Unity】Spine动态换装进阶:SkeletonGraphic插槽级皮肤切换与内存优化

本文深入探讨了Unity中Spine动态换装的进阶技术,重点解析了SkeletonGraphic插槽级皮肤切换的实现原理与内存优化策略。通过代码示例展示了如何高效管理皮肤实例、避免内存泄漏,并提供了对象池、纹理合并等性能优化方案,帮助开发者提升2D角色换装系统的运行效率与稳定性。

food6的博客 196

AUTOSAR进阶图解==>AUTOSAR_SWS_DefaultErrorTracer

AUTOSAR Default Error Tracer (DET)是AUTOSAR架构中的核心错误追踪模块,提供统一的错误报告机制。DET能够处理开发错误、运行时错误和瞬态故障三类问题,支持模块级和实例级的配置管理。模块架构上,DET通过Det_API接口与其他模块交互,可配置转发错误至诊断事件管理器(DEM)或调试日志追踪(DLT)。其配置结构包含全局参数和模块实例参数,允许灵活控制错误报告行为。DET在AUTOSAR 4.3.0版本中从DevelopmentErrorTracer扩展而来,增强了错误处

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 910

ES6数组Array整理:比ES5更推荐的使用方法和技巧

原文链接: https://dsx2016.com/?p=692 微信公众号: 大师兄2016 ECMAScript ECMA Script是ECMA-262标准化的脚本语言的名称。 尽管JavaScript和JScript与ECMAScript兼容,但包含超出ECMA Script的功能。 以下表格按照四个模块分类: ECMAScript 1st Edition (ECMA-...

大师兄 643

Cesium 实战 26 - 自定义纹理材质 - 箭头流动线(图片纹理)

Cesium 实战 - 自定义纹理材质 - 箭头流动线(图片纹理)。

非科班Java出身GISer的博客 1405

es6整理

es6 let和const let是块级变量; 不可以重复声明,会报错; 没有变量提升,会报错; 存在暂时性死区,即声明变量时,区块中对这些声明变量形成封闭作用域,凡是在声明之前使用变量就会报错; const在与let相同基础上要注意 const声明的变量不能修改,否则会报错 // stu是对象,在内存中以地址的形式存储, const stu={ name:'zs' } // 修改了数据。所以地址没有变化。不会报错 stu.name='ls'; // 重新赋值会报错。 stu={ name:'ls'

yxf135的博客 208

微信公众号 - 超详细 H5 网页接入微信支付功能,开发网站微信支付最详细的教程示例代码(微信公众号前端支付 JS-SDK / JSAPI 微信H5授权登录支付,唤起微信支付)最新超级详细教程

H5页面接入微信支付功能,前端网页端怎么做微信JSAPI支付,vue网站接入微信JSSDK支付,vueH5项目如何做使用微信支付,端h5调用微信支付jsapi方法,前端vue开发的H5网站怎么微信支付最详细的教程示例代码,vue怎么调取微信支付流程,将H5接入微信支付退款,vue网站怎么搞微信支付,H5前端开发网站在微信环境内H5调起微信支付,react项目h5如何调用微信支付的方法,nuxt.js项目vueH5集成微信JS支付,网站怎么做出H5微信公众号支付,请问vue.js这个框

🏆 前端领域优质创作者 8126

C语言中errno与perror()函数

宏errno和perror()函数都是在stdlib.h中定义的。 1 stdlib.h头文件 stdlib.h头文件即standard library标准库函数头文件,包含了C、C++语言的最常用的系统函数,该文件中还包含了C语言标准库函数的定义。 2 errno宏 errno宏在stdlib.h中的定义为 #define errno (*_errno()) errno宏用于保存程...

hou09tian的博客 1万+

ES6对数组的扩展(简要总结)

文章目录数组的扩展(ES6)1. 扩展运算符2. Array.from3. Array.of()4. copyWithin()5. find() 和 findIndex()6. fill()7. entries(), keys() 和 values()8. includes()9. 数组的空位 数组的扩展(ES6) 数组平时肯定是用的比较多的,今天和大家聊一下ES6对数组的扩展,理解的东西不多,主...

happyCoding1024的博客 519

学Simulink——基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,提出通过精确反馈线性化实现转矩指令与实际转矩的严格线性关系。文章系统阐述了IOL原理、PMSM控制器推导过程,并提供了完整的Simulink建模步骤,包括电机模型搭建、IOL控制器实现和闭环系统构建。通过仿真对比验证了IOL方法在转矩跟踪精度、动态响应和参数鲁棒性方面的显著优势,最后讨论了工程实现要点和扩展应用方向。该方法为高性能伺服系统开发提供了有效解决方案。

amy_mhd的博客 61

ES6常用知识点梳理

中年危机是真实存在的,即便有技术傍身,还是难免对自己的生存能力产生质疑和焦虑,这些年职业发展,一直在寻求消除焦虑的依靠。技术要深入到什么程度?做久了技术总要转型管理?我能做什么,我想做什么?一技之长,就是深耕你的专业技能,你的专业技术。(重点)独立做事,当你的一技之长达到一定深度的时候,需要开始思考如何独立做事。(创业)拥有事业,选择一份使命,带领团队实现它。(创业)一技之长分五个层次栈内技术 - 是指你的前端专业领域技术栈外技术 - 是指栈内技术的上下游,领域外的相关专业知识。

2401_84411557的博客 1181

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

es6常用知识点

自己学习是整理的es6知识点(写的比较简洁) 1 let代替var 块级作用域 2 const 定义常量 块级作用域 3 解构赋值 var [a,b,c]=['aa','bb','cc']; console.log(a,b,c) 4 字符串模板‘<div>${name}</div><div>${age}</div><div>${c...

wuxiYmy的博客 258

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

关于ES6中新增的Array方法,简单总结,十分实用,2024年最新oppoWeb前端面试

技术栈比较搭,基本用过的东西都是一模一样的。快手终面喜欢问智力题,校招也是终面问智力题,大家要准备一下一些经典智力题。如果排列组合、概率论这些基础忘了,建议回去补一下。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)一个人可以走的很快,但一群人才能走的更远!

m0_60707708的博客 743

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ES6整理笔记

数组的扩展 1.Map 和Generator 函数 //Map结构 使用扩展运算符 rest let mymap = new Map([ [1,'one'], ['two','小明'], [3,'three'], ]); var arr=[...mymap.keys()];//[1,two,3] var arr=[...mymap.values()];//[one,小明,three] co...

DoDo_zzt21的博客 257

es6语法整理

1,let和const let和const都是定义一个变量,var也是定义一个变量,他们的区别在于: 1,let和const是块级作用域,而var的作用域是整个封闭函数,是全域的。 2,变量提升:不论通过var声明的变量处于当前作用于的第几行,都会提升到作用域的最顶部。 而let声明的变量不会在顶部初始化,凡是在let声明之前使用该变量都会报...

weixin_42667420的博客 214

整理学习——ES6数组的扩展

文章目录Array.from()与扩展运算符的区别第二参数第三参数Array.of()数组实例相关方法copyWithin()includes()对比indexOf()对比Map结构的has对比Set结构的has数组的空位 Array.from() 将两类对象转为真正的数组: 类似数组的对象(具有length属性) DOM操作返回的NodeList集合 函数内部的arguments对象 可...

shaliwang的博客 286

ES6知识点整理之----数组扩展----API新增

Array.from() 用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。 只要是部署了 Iterator 接口的数据结构,Array.from都能将其转为数组。 任何有length属性的对象,都可以通过Array.from方法转为数组,而扩展运算符就无法转换。...

ap1005233的博客 194

整合ES6-ES12及相关面试题整理

目录ES6箭头函数模板字符串解构赋值扩展运算符对象属性简写promise(重点说一下)let 与 constES7数组.includes()ES8async/awaitES9Object.values()Object.entries()Rest/Spread 属性ES10Array的 flat()方法和 flatMap()方法String的 trimStart()方法和 trimEnd()方法Object.fromEntries()新的基本数据类型 BigIntSymbolES11Promise.allSe

ALoye_喜樂的博客 1113

Javascript[ECMAScript] ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性

它的键名所引用的对象都是弱引用,即垃圾回收机制不将该引用考虑在内,因此,只要所引用的对象的其他引用被清除了,垃圾回收机制就会释放该对象所占用的内存。传统的 JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是只能用字符串当做键,这给它的使用带来了很大的限制,而 ES6 提供了 Map 数据结构,它类似于对象,也是键值对的集合,但是“键” 的范围不限于字符串,各种类型的值(包括对象)都可以当做键。Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。

冉冉同学的专栏 1645

整理es6-es12新特性

es6-es12所有新特性

然后不二 836

ES6-ES10 个人整理

ES6的新特性 1.const与let变量 let 与 var的区别 let 块级作用域,不能重复定义,存在死区,不会变量提升 使用var带来的麻烦 function getClothing(isCold) { if (isCold) { var freezing = 'Grab a jacket!'; } else { var hot = 'It's a shorts k...

weixin_34321753的博客 814

ES6_05、数组的扩展

目录 一、Array.from()方法复制数组 ES6方法 二、Array.of()的用法 把传入一组参数,返回一个数组; 三、es5里面的数组的循环方法 arr.map(参数1,参数2)方法,参数用法同上 非常有用,做数据交互映射 arr.filter():过滤,过滤一些不合格元素,使用return返回 arr.some() 判断是否有某个元素(又一个符合条件),有即返回t...

baidu_41921865的博客 215

在react中 实现 base64的图片转换成formdata格式并实现上传功能

如果不想要服务端实现处理base64格式的图片的转换,那么在浏览器端来实现,部分属于伪代码,仅作为开发参考,请勿直接拷贝使用

Wang的专栏 8836
上一篇: ES6知识点整理Map的应用
下一篇: ES6知识点整理Object属性新的写法
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Wang's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值