数组差集使用场景

133 阅读1分钟

业务场景

在使用Ant Design Vue Tree 树形控件时点击树节点时回调函数的第一个参数会返回一个selectedKeys数组,当用户单击时需要确认用户选中或者取消哪一个树节点。
代码实现
①
let arr1 = [1, 2, 3, 4]
let arr2 = [1, 2, 3]
function subtraction(arr1, arr2) {
    let differenceArr = []
    arr1.forEach(item1 => {
        let index = arr2.indexOf(item1)
        if (index == -1){
            differenceArr.push(item1)
        }
        或者
        <!--let index = arr2.includes(item1)
        if (!index){
            differenceArr.push(item1)
        }-->
    })
    return  differenceArr
}
let arr = subtraction(arr1,arr2)
console.log(arr)//[4]
局限:arr1的范围必需要比arr2的范围大
②
function subtraction2(arr1, arr2) {
    //concat 返回新数组
    return arr1.concat(arr2).filter(
        item => arr1.includes(item) && !arr2.includes(item)
    )
}
let arr3 = subtraction2(arr1,arr2)
console.log(arr3) // [4]