0
点赞
收藏
分享

微信扫一扫

js得到数组A减去数组B的结果

  // 题意 例如arr1=[1,2,3,4,5] arr2=[1,2]  arr1减去arr2的结果就是 [3,4,5]
        var arr1 = [
            {
                name: 'zs',
                id: 18
            },
            {
                name: 'xiaoming',
                id: 20
            },
            {
                name: 'lisi',
                id: 22
            },
            {
                name: 'ww',
                id: 25
            },
            {
                name: 'liga',
                id: 26
            }
        ]

        var arr2 = [
            {
                name: 'zs',
                id: 18
            },
            {
                name: 'xiaoming',
                id: 20
            },
        ]
        // 方法一
        function myRemove(arr1, arr2) {
            var newArr = []
            arr1.forEach(function (obj1, index) {
                var findRet = arr2.find(function (obj2) {
                    return obj1.id === obj2.id
                })
                if (!findRet) {
                    newArr.push(obj1)
                }
            })
            return newArr
        }
        // 方法二
        function myRemove2(arr1, arr2) {
            return arr1.filter(function (obj1, index) {
                return !arr2.find(function (obj2) {
                    return obj1.id === obj2.id
                })
            })
        }

        // 方法三
        console.log(
            arr1.reduce((arr, item) => {
                var findRet = arr2.find(function (obj) {
                    return item.id === obj.id
                })
                // return的值会被当成下一次循环的sum
                if (!findRet) {
                    arr.push(item)
                }
                return arr
            }, [])
        );
举报

相关推荐

0 条评论