Mi matriz ( this.serviceTable ) incluye un objeto, que se ve así:
[ { "0": { "service": "Service 0" }, "id": 0 }, { "1": { "service": "Service 1" }, "id": 1 }, { "2": { "service": "Service 2" }, "id": 2 } ]Y de esa matriz, quiero eliminar lo siguiente:
[ { "2": { "service": "Service 2" }, "id": 2 }, { "0": { "service": "Service 0" }, "id": 0 } ]Así que el resultado debería ser:
[ { "1": { "service": "Service 1" }, "id": 1 } ]Esto es lo que he probado:
const SELECTED_IDS:Array<number> = []; for (let item of this.selection.selected) { SELECTED_IDS.push(item.id); } console.log( this.serviceTable.filter((serviceValue, i) => { !SELECTED_IDS.includes(i); } ), 'result'); }Pero eso devuelve una matriz vacía.
La sintaxis de la función de flecha es incorrecta. Si usa corchetes, la función no devuelve automáticamente nada como lo hace sin los corchetes. Y la función de filtro espera que la función devuelva un valor booleano.
Ver los documentos .
Aquí está la corrección:
console.log( this.serviceTable.filter((serviceValue, i) => !SELECTED_IDS.includes(i) ), 'result'); // OR console.log( this.serviceTable.filter((serviceValue, i) => { return !SELECTED_IDS.includes(i); } ), 'result'); }