手写函数-数组取差异

112 阅读1分钟

前言

通过手写JS方法,加强对JS方法的理解,巩固原生JS基础。本次要写的方法是,数组取差异,得到当前数组中所有不在原数组中的元素组成的数组。

数组取差异

difference()

说明:

语法:difference(arr1,arr2)

功能:得到当前数组中所有不在arr中的元素组成的数组(不改变原数组)

例子:difference([1,2,3,4,5],[1,3,5]) =>[2,4]

实现:

  • 结构:方法接收两个参数,都是数组

  • 功能实现:

    检查arr1,在arr2存在还是不存在,如果不存在就是需要的值。对数组arr1每个元素进行过滤,如果arr1中元素在arr2中没有,就是满足条件的结果,保存到结果数组中,最后return

    • 判断arr1。如果arr1长度为0,那么返回空数组
    • 判断arr2。如果arr2长度为0,那么返回新数组(return arr1.slice()),利用slice()
    • 过滤arr1。过滤arr1中的每一项不存在arr2的值。

代码:

difference.js

function difference(arr1, arr2) {
  // 判断arr1是否为空。
  if (arr1.length === 0) return []
  // 判断arr2是否为空
  if (arr2.length === 0) return arr1.slice()
  // 过滤arr1,返回arr1每一项不包含在arr2中的元素
  const result = arr1.filter(item => !arr2.includes(item))
  // 返回结果
  return result
}

difference.html

<!DOCTYPE html>
<html lang="en"><head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./difference.js"></script>
</head><body>
  <script>
    const arr1 = [1, 2, 3, 4, 5]
    const arr2 = [1, 2, 5]
    console.log(difference(arr1, arr2))
  </script>
</body></html>

\