前言
通过手写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>
\