type
status
date
slug
tags
category
icon
password
数组
常⽤的数组操作⽅法有哪些?
Array.shift()
- 删除并返回第⼀个元素作⽤:从数组中删除第⼀个元素(即下标为0的元素),并返回该元素。 注意:1)删除元素之后,数组的⻓度-1。
Array.pop()
- 删除并返回最后⼀个元素 作⽤:从数组中删除最后⼀个元素(即下标为length-1的元素),并返回该元素。 注意:1)删除元素之后,数组的⻓度-1。
Array.push(param1[,param2,…paramN])
- 尾部添加元素 作⽤:在数组的尾部添加⼀个元素,并返回新数组的⻓度。 注意:1)它是直接修改该数组,⽽不是重新创建⼀个数组。
Array.unshift(newElement1[,newElement2,…newElementN])
- 头部添加元素 作⽤:在数组的头部添加⼀个或多个元素,并返回新数组的⻓度。 注意:1)它是直接修改该数组,⽽不是重新创建⼀个数组
Array.join([separator])
- 转换成字符串 作⽤:把数组的所有元素放⼊到⼀个字符串中。 注意:1)参数separator表示字符串中元素的分隔符,可以为空,默认为半⻆逗号。
Array.reverse()
- 反转数组 作⽤:把数组的所有元素顺序反转。 注意:1)该⽅法会直接修改数组,⽽不会创建新的
数组
数组如何进⾏降维(扁平化)
- 利⽤Array.some⽅法判断数组中是否还存在数组,es6展开运算符连接数组
let arr = [1,2,[3,4]] while (arr.some(item => Array.isArray(item))) { arr = [].concat(...arr); }
- 使⽤数组的concat⽅法
let arr = [1,2,[3,4]] let result = [] result = Array.prototype.concat.apply([], arr)
- es6中的flat函数也可以实现数组的扁平化
let arr = [1,2,['a','b',['中','⽂',[1,2,3,[11,21,31]]]],3]; let result = arr.flat( Infinity )
数组去重,能⽤⼏种⽅法实现?
- 利⽤ES6 Set去重(ES6中最常⽤)
- 利⽤for嵌套for,然后splice去重(ES5中最常⽤)
- 利⽤indexOf去重
- 利⽤sort去重
- 利⽤includes
- 利⽤fifilter
- 利⽤递归去重
数组中的forEach和map的区别?
forEach() 和 map() 两个⽅法都是ECMA5中Array引进的新⽅法,都是⽤来遍历数组中的每⼀项。
它们之间的区别:
- map速度⽐forEach快
- map会返回⼀个新数组,不对原数组产⽣影响,foreach不会产⽣新数组,forEach返回undefifined
- map因为返回数组所以可以链式操作,forEach不能
- map⾥可以⽤return(return的是什么,相当于把数组中的这⼀项变为什么(并不影响原来的数 组,只是相当于把原数组克隆⼀份,把克隆的这⼀份的数组中的对应项改变了) 。
- forEach⾥⽤return不起作⽤,forEach不能⽤break,会直接报错。
for in和for of的区别?
在JavaScript中遍历数组通常是使⽤for…i循环,在ES5具有遍历数组功能的还有forEach、map、fifilter、
some、every、reduce、reduceRight等。for…in和for…of是两种增强型循环,for…in是ES5标准,在
ES6中新增了for…of的循环⽅式。
- for…in :遍历以任意顺序迭代⼀个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性
- for…of:遍历在可迭代对象,包括 Array , Map , Set , String , TypedArray ,arguments 对象等等
- 它们的区别 :
- for…in可以遍历对象和数组,for…of不能遍历对象
- for…in 循环不仅遍历对象的键名,还会遍历⼿动添加的其它键,甚⾄包括原型链上的键
- for…in遍历的索引为字符串类型
- for..of适⽤遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合,但是不能遍历对象
- for…of与forEach()不同的是,它可以正确响应break、continue和return语句具有迭代器对象才可以使⽤for…of
- 作者:CC
- 链接:https://juejin.cn/user/1086748304878360/article/1aa42600-9788-8112-a93a-fa087c5cd0be
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。