数组的 pop push unshift shift 分别做什么

213 阅读1分钟

pop push unshift shift 对数组头部或尾部添加或删除数据

// pop
const popRes = arr.pop()
console.log(popRes, arr)  // 40  [10,20,30]
// shift
const shiftRes = arr.shift()
console.log(shiftRes, arr) // 10 [20,30,40]
// push
const pushRes = arr.push(50) // 返回 length
console.log(pushRes, arr)  // 5  [10,20,30,40,50]
// unshift
const unshiftRes = arr.unshift(5) // 返回 length
console.log(unshiftRes, arr) // 5 [5,10,20,30,40]

纯函数:不对外界产生副作用的函数就叫纯函数!

哪些方法不改变原数组?

concat map filter slice 就是纯函数,它们具有以下特点:

  1. 不改变源数组(没有副作用);
  2. 返回一个数组
const arr = [10, 20, 30, 40]
// concat
const arr1 = arr.concat([50, 60, 70])
console.log(arr) // [10, 20, 30, 40]
console.log(arr1) //[10, 20, 30, 40, 50, 60, 70]
// map
const arr2 = arr.map(num => num * 10)
console.log(arr) // [10, 20, 30, 40]
console.log(arr2) //[100, 200, 300, 400]
// filter
const arr3 = arr.filter(num => num > 25)
console.log(arr) // [10, 20, 30, 40]
console.log(arr3) //[30, 40]
// slice
const arr4 = arr.slice()
console.log(arr) // [10, 20, 30, 40]
console.log(arr4) //[10, 20, 30, 40]
哪些方法是非纯函数?
  • push pop shift unshift
  • forEach
  • some every
  • reduce