作业帮面试题,原题目是“哪些数组操作不会改变原数组?”,这里扩展一下,列出了所有的数组操作。
1、shift
删除数组中第一个元素,返回被删除的元素,改变了原数组
array.shift()
2、pop
删除数组中最后一个元素,返回被删除的元素,改变了原数组
array.pop()
3、unshift
向数组开头追加元素,可追加一个或多个元素,返回新数组长度,改变了原数组
array.unshift(item1,item2,...)
4、push
向数组末尾追加元素,可追加一个或多个元素,返回新数组长度,改变了原数组
array.push(item1,item2,...)
5、concat
连接两个或多个数组,返回新数组,不改变原数组
array1.concat(array2,array3,...)
6、join
将数组元素通过指定分隔符拼接成字符串,返回字符串,不改变原数组
array.join('-')
7、reverse
颠倒数组中元素的顺序,返回改变后的新数组
array.reverse()
8、slice
截取数组中的一部分,返回截取的部分数组,不改变原数组
array.slice(startIndex,endIndex)
9、splice
向数组中添加或删除项目,返回被删除的项目,改变了原数组
array.splice(index,deleteCount,item1,item2,...)
10、copyWithin
在数组内部,将指定位置的成员复制到数组中的其他位置,返回复制后的新数组
array.copyWithin(targetIndex, startIndex, endIndex)
11、fill
将给定的值填充到数组的指定位置,返回填充后的新数组,若给定的值是引用类型,则填充的所有项指向同一个地址。
array.fill(value, startIndex, endIndex)
12、flat
将二维或多维数组按指定层数拉平,返回拉平后的新数组,不改变原数组
array.flat(Infinity)
13、map
遍历数组进行操作,返回新数组,不改变原数组
array.map((item,index) => {
// 数组操作
return item
})
14、flatMap
先执行map操作再执行flat操作,只能展开一层数组,返回新数组,不改变原数组
array.flapMap((item,index) => {
// 数组操作
return item
})
15、sort
按规则排序,返回排序后的新数组
array.sort(sortFn)
更多面试题可参考大厂高级前端面试题