var arr1 = [{a: "111", b:"222",c:1,d:6},
{a:"333", b:"444",c:11,d:56},
{a:"555", b: "666",c:21,d:46},
{a: "777", b:"888",c:13,d:36},
{a:"999", b:"000",c:14,d:26},
{a:"110", b: "220",c:51,d:16}
]
var arr2 = [{a:"333", b:"444",c:11,d:56},
{a:"555", b: "666",c:21,d:46},
{a: "777", b:"888",c:13,d:36},
{a:"999", b:"000",c:14,d:26},
]
function removeList(originList, delList) {
var newArr = originList
delList.forEach((Element1, index1) => {originList.forEach((Element2, index2) => {if (isObjectValueEqual(Element1, Element2)) {newArr.splice(index2, 1)
}
})
})
originList = newArr
return originList
}
function isObjectValueEqual(a, b) {var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
if (aProps.length != bProps.length) {return false;}
for (var i = 0; i < aProps.length; i++) {var propName = aProps[i]
var propA = a[propName]
var propB = b[propName]
if ((typeof (propA) === 'object')) {if (this.isObjectValueEqual(propA, propB)) {return true} else {return false}
} else if (propA !== propB) {return false} else {}}
return true
}
console.log(removeList(arr1,arr2));
// 不扭转原数组的状况
console.log(removeList(JSON.stringify(arr1),arr2));