let ary =[{id:'123',age:12,name:'张三'},{id:'12',age:16,name:'李四'},{id:'1234',age:12,name:'王五'},{id:'123',age:12,name:'张三'},{id:'1234',age:18,name:'王五'},]
数组方法扩展(去重数组元素中 对象相同属性的数组对象元素)
function_name: restoreData
key: String [去重该属性值一样的数组里的对象]
使用: let ary1 = ary.restoreData(key)
Array.prototype.restoreData=functionrestoreData(key){
console.log(this)let _this =this
console.log(_this)if(_this.length <1){thrownewError('The length must be greater than 1')}if(Object.prototype.toString.call(_this[0])!=="[object Object]"){thrownewError('This array element is not a normal standard object type')}let _arr =[]
_this.forEach(item=>{
_arr.push(item[key])})
_arr = Array.from(newSet(_arr))
_this.forEach(item=>{for(let i =0; i < _arr.length; i++){if(item[key]=== _arr[i]){
_arr[i]= item
}}})return _arr
}
第二种方案
let arr =[{id:'123',age:12,name:'张三'},{id:'12',age:16,name:'李四'},{id:'1234',age:12,name:'王五'},{id:'123',age:12,name:'张三'},{id:'1234',age:18,name:'王五'}];Array.prototype.restoreData=function(key){let _this =thisif(_this.length <1){thrownewError('The length must be greater than 1')}if(Object.prototype.toString.call(_this[0])!=="[object Object]"){thrownewError('This array element is not a normal standard object type')}if(_this.length ===1)return _this
let _keys =[]let _arr =[]
_this.map(item=>{if(_keys.indexOf(item[key])===-1){
_arr.push(item)
_keys.push(item[key])}})return _arr
}let newArr = arr.restoreData('id')
console.log(newArr)