代码如下 const _distinctMore = (arr, ...arguements) => { let newArr = []; function getBoolean (origin, newVal) { console.log(111, arguements) let list = arguements.map(item => origin[item] === newVal[item]); // 值均为布尔 console.log(222, list, list.every(item => item)); return list.every(item => item); // 属性匹配均为真 } // 总数组与新数组比较,遍历总数组时用新数组的some方法进行判断 arr.map(item => newArr.some(newVal => getBoolean(item, newVal)) ? '' : newArr.push(item)); return newArr; } 测试结果 测试数据 let arr = [ { "name": "wzf", "sex": "nan", "code": "123" }, { "name": "wzf", "sex": "nan", "code": "gfd" }, { "name": "wzf", "sex": "000", "code": "111" }, { "name": "hgf", "sex": "nv", "code": "111" } ]