LLwanran / front_end_studying

前端知识要点
https://llwanran.github.io/front_end_studying/
2 stars 1 forks source link

有赞: 在不改变原数组的前提下,添加或删除某个元素(一面) #56

Open LLwanran opened 4 years ago

LLwanran commented 4 years ago

答案:

在不改变原数组的前提下,向该数组的首位添加一个新的元素,得到一个新数组,假设新增元素为0

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]
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]

同样的前提条件下,删除该数组的最后一个元素,得到一个新数组:

let arr = [1, 2, 3, 4]
, newArr = arr.slice(0, -1)
console.log(arr) // [1, 2, 3, 4]
console.log(newArr) // [1, 2, 3]
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 在使用的时候会对原数组造成影响,简单归纳一下: