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));