Estoy tratando de descubrir cómo eliminar objetos dentro de una matriz en función de un valor clave.
Actualmente, el objeto se parece a esto:
const myArray = [ { firstname: 'John', lastName: 'Doe', sortOrder: 22 }, { firstname: 'Jane', lastName: 'Doe', sortOrder: 11 },{ firstname: 'Jen', lastName: 'SomeLastName', sortOrder: 33 }, { firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12 } ];Espero reducir la matriz en una cantidad específica, eliminando objetos con el orden de clasificación más alto, para que la función de eliminación de objetos regrese:
const myArray = [ { firstname: 'Jane', lastName: 'Doe', sortOrder: 11 },{ firstname: 'ExampleFirstName', lastName: 'ExampleLastName', sortOrder: 12 } ];Mi función actual se ve así, pero no elimina nada:
reduceArray = (myArray, amount) => { let keys = Object.keys(myArray); let keyLength = keys.length; let orderArray = []; let i = 0, j = 0; for (i = 0; i < keyLength; i++) { let subArray = myArray[keys[i]]; let subLength = subArray.length; for (j = 0; j < subLength; j++) { orderArray.push(subArray[j].sortOrder); } } let totalLength = orderArray.length; for (i = 0; i < totalLength - 1; i++) for (j = i + 1; j < totalLength; j++) if (orderArray[i] < orderArray[j]) { let temp = orderArray[i]; orderArray[i] = orderArray[j]; orderArray[j] = temp; } orderArray.splice(amount, totalLength - amount); let deletedAmount = 0; for (i = 0; i < keyLength; i++) { let subArray = myArray[keys[i]]; let subLength = subArray.length; for (j = 0; j < subLength; j++) { if (orderArray.includes(subArray[j].sortOrder)) { subArray.splice(j, 1); j--; subLength--; deletedAmount++; if (deletedAmount == amount) break; } } if (deletedAmount == amount) break; } return myArray; }Y lo estoy llamando así:
const reducedArray = reduceArray(myArray, 2);Simplemente devuelvo mi misma matriz sin quitar nada.
¿Alguna idea de lo que podría estar haciendo mal?