Intentar eliminar el objeto duplicado de las matrices para que el conjunto de matrices contenga solo valores únicos. entrada dada
var data=[ [{"name":"abc"}], [{"name":"abc"}], [{"name":"abc"},{"name":"def"}], [{"name":"def"},{"name":"abc"},{"name":"efg"}], [{"name":"abc"}] ]Rendimiento esperado
result= [ [{"name":"abc"}], [], [{"name":"def"}], [{"name":"def"},{"name":"efg"}], [] ]tratando de deduplicar el objeto de toda la matriz (existe en todos). comparación de objetos en lugar de atributo de nombre Cualquier sugerencia de lógica aquí
Puede intentar mapear la matriz de nivel superior y filtrar cada matriz de elementos. Luego, puede declarar una variable que contendrá los valores únicos para que tenga una base para la verificación.
const data = [ // your multi-dimentional array here... ] const unique = [] const filteredData = data.map(items => { const filteredItems = items.filter(item => { if (unique.includes(item.name)) { return false } else { unique.push(item.name) return true } }) return filteredItems }) console.log(filteredData)... más cosas torpes:
var data=[ [{"name":"abc"}], [{"name":"abc"}], [{"name":"abc"},{"name":"def"}], [{"name":"def"},{"name":"abc"},{"name":"efg"}], [{"name":"abc"}] ]; let newMap = new Map(); for(let item in data) { const [key, val] = [item, data[item]] addToMap(val) } function addToMap(entry) { if(entry.length > 1) { for(let item in entry) { addToMap([entry[item]]) } } else { const item = entry[0]; itemName = item?.name; console.log({item, itemName}); if(!!itemName && !newMap.has(itemName)) { const key = itemName; const val = item; newMap.set(key, val); } } } let result = Array.from(newMap).flat() .map(key => newMap.get(key) || []) // .map(key => newMap.get(key) || null) // .filter(item => item !== null) console.log('RESULT ', result)