Varios métodos de deduplicación de objetos de matriz de JavaScript

Los datos que se filtrarán, elimine los datos repetidos de la ciudad en arr (el arr usado en el siguiente método es todo este conjunto de datos)

var arr = [
  {
    
    id: 1,city: '南京'},
  {
    
    id: 2,city: '南京'}, 
  {
    
    id: 3,city: '杭州'}, 
  {
    
    id: 4,city: '广州'}
];

1. Método de objeto: el método de reducción de la matriz
no admite este método a continuación, ie9.
Portal: explicación detallada del método de reducción

var obj = {
    
    };

var newArr = arr.reduce((prev,cur)=>{
    
    
  obj[cur.city] ? '':obj[cur.city] = true && prev.push(cur);
  return prev
},[]); //  [{id: 1,city: '南京'},{id: 3,city: '杭州'},{id: 4,city: '广州'}]  

2. Clasificación de burbujas

for (var i = 0; i < arr.length - 1; i++) {
    
    
  for (var j = i + 1; j < arr.length; j++) {
    
    
    console.log(i,j)
    if (arr[i].city == arr[j].city) {
    
    
      arr.splice(j, 1); 
      j--; // 因为数组长度减小1,所以直接 j++ 会漏掉一个元素,所以要 j--
    }
  }
}

console.log(arr); //  [{id: 1,city: '南京'},{id: 3,city: '杭州'},{id: 4,city: '广州'}] 

3. Doble bucle

var newArr = [];

arr.forEach((item) => {
    
    
  var check = newArr.every((b) => {
    
    
    return item.city !== b.city;
  })
  check ? newArr.push(item) : '';
})

console.log(newArr); //  [{id: 1,city: '南京'},{id: 3,city: '杭州'},{id: 4,city: '广州'}]  

4. Portal de objetos de mapa ES6
: explicación detallada del objeto de mapa

let formatArr = () => {
    
    
  let map = new Map();
  for (let item of arr) {
    
    
    if (!map.has(item.city)) {
    
    
      map.set(item.city, item);
    }
  }
  return [...map.values()];
}

let newArr = formatArr(); //  [{id: 1,city: '南京'},{id: 3,city: '杭州'},{id: 4,city: '广州'}]  

Supongo que te gusta

Origin blog.csdn.net/ZYS10000/article/details/109955135
Recomendado
Clasificación