filter():对数组每一项都运行传入的函数,函数返回true的项会组成之后的返回 。
map(): 对数组每一项都运行输入的函数,返回由每次函数调用的结果构成的数组 。
forEach():对数组每一项都运行传入的函数,没有返回值 。
let numbers = [1,2,3,4,5,6];numbers.filter((item,index,array) => item > 2); //[3,4,5,6]numbers.map((item,index,array) => item * 2); //[2,4,6,8,10,12]numbers.forEach((item,index,array) => {//执行某些操作});
归并方法
reduce():从数组第一项开始遍历到最后一项 。
reduceRight():从最后一项开始遍历至第一项 。
let values = [1,2,3,4,5];let sum = values.reduce((prev,cur,index,array) => prev +cur); //15
数组其他方法
concat(): 在现有数组全部元素基础上创建一个新数组 。
slice():创建一个包含原有数组中一个或多个元素的新数组 。
splice():在数组中插入(删除、替换)元素 。第1个参数,操作的位置,第2个参数,要删除的元素个数,后面的n个参数,插入到数组中的元素 。
indexOf():查找元素所在的索引位置 。
lastIndexOf(): 和indexOf方法类似,区别是从后往前找 。
includes():判断是否包含元素 。
let color = ['red','green','blue'];let color2 = colors.concat('yellow',['black','brown']);//['red','green','blue','yellow','black','brown']let color3 = colors.slice(1); //['green','blue']let color3 = colors.slice(1,2); //['green']let removed = colors.splice(0,1); // removed = red; colors = ['green','blue']colors.splice(1,0,'yellow','orange'); //在第一个位置插入两个元素 ['green',blue','yellow','orange']let numbers = [1,2,3,4,5,6,7,8,9];numbers.indexOf(4);//3numbers.includes(5);//true
Map:ES6新增的集合类型,可以给Map构造函数传入一个可迭代对象,需要包含键/值对数组 。Map可以使用任何javascript数据类型作为键 。map的值类型也是没有限制的 。Map实例会维护键值对的插入顺序,可以根据插入顺序执行迭代操作 。
API:
has(key) :判断键是否存在 。
set(key,value):设置键值对 。
get(key):根据key获取对应的值 。
delete(key):删除键值对 。
clear():清除这个map 。
size属性:获取map的长度 。
Map与Object比较:
内存占用:不同浏览器情况不同,但给定固定大小的内存,Map可以存更多的键值对
插入性能:插入Map一般会稍快 。
查找速度:如果只包含少量键值对,Object速度更快,如果代码涉及大量查找操作,某些情况下选Object可能更好
删除速度:Map的delete()操作性能更优
综上所述,一般情况下使用Map代替Object做键值操作是更明智的选择 。
WeakMap:与Map类似的数据 结构,主要应对垃圾回收优化操作,它不会阻止垃圾回收操作 。WeakMap不可迭代键,也不能clear()整个数据 。它非常适合保存关联元数据,比如dom树种的一个元素,作为WeakMap的key,当dom元素被删除是,WeakMap对应的值被销毁 。如果把dom元素做为Map的key,则不会释放dom元素,造成内存浪费 。这是WeakMap中Weak的正解 。
Set:集合,存储不重复的值 。Set会维护插入是的顺序,因此支持顺序迭代 。
API:
add():增加值 。
has():判断是否包含值 。
delete():删除值
size属性:Set长度
推荐阅读
- 分数加减法练习题 怎么算分数加减法?怎么教给孩子?
- ps画布镜面翻转技巧 ps翻转画布快捷键设置
- oss对象存储服务 腾讯云oss收费标准
- 葛根的保健功效
- 如何给身体大排毒一次
- 计算机编程自学 我想自学电脑编程 大家给些建议
- js将object转换为数组 js怎么判断对象是否为空是否存在
- js创建数组的三种方式 js清空数组的方法
- 个性店铺起名 怎么根据吉祥语给店铺起名?
- 车牌给的螺母是干嘛的