Open Genzhen opened 3 years ago
答案:
在不改变原数组的前提下,向该数组的首位添加一个新的元素,得到一个新数组,假设新增元素为0:
concat
let arr = [1, 2, 3, 4]
let newArr = [].concat(0, arr)
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [0, 1, 2, 3, 4]
扩展运算符
let arr = [1, 2, 3, 4]
, newArr = [0, ...arr]
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [0, 1, 2, 3, 4]
reduce
let arr = [1, 2, 3, 4]
, newArr = arr.reduce((acc, cur) => {
acc.push(cur)
return acc
}, [0])
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [0, 1, 2, 3, 4]
同样的前提条件下,删除该数组的最后一个元素,得到一个新数组:
slice
let arr = [1, 2, 3, 4]
, newArr = arr.slice(0, -1)
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [1, 2, 3]
reduce
let arr = [1, 2, 3, 4]
, last = arr.length - 1
, newArr = arr.reduce((acc, cur, idx) => {
if (idx !== last) {
acc.push(cur)
}
return acc
}, [])
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [1, 2, 3]
解答思路:
这道题主要考察数组相关操作,包括一些数组 API 的使用。
我们需要清楚哪些 API 不会修改原数组,哪些 API 在使用的时候会对原数组造成影响,简单归纳一下:
不修改原数组
slice
concat
forEach
map
every
some
filter
reduce
reduceRight
keys
values
entries
includes
find
findIndex
flat
flatMap
修改原数组
splice
pop
push
shift
unshift
sort
reverse
fill
copyWithin
扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。