Estoy tratando de escribir una función en Javascript que acepte una matriz anidada y un número como dos argumentos y devuelva una nueva matriz anidada con los últimos dos elementos eliminados en cada matriz interna como lo indica el argumento numérico.
Por ejemplo:
*/ removeColumns([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]], 2); => [[1, 2], [1, 2], [1, 2], [1, 2]] */Adjunto el código que he escrito hasta ahora. Esto me da un retorno de [[3, 4], [3, 4]. Pensé que la función de empalme siempre elimina los elementos de la matriz después del índice proporcionado, pero aquí parece estar eliminando elementos antes del índice. ¿Qué estoy haciendo mal aquí?
const removeColumns = (originalGrid, numColumns) => { for (let i = 0; i < originalGrid.length; i++) { console.log(originalGrid[i].splice(originalGrid.length - numColumns, numColumns)) console.log(originalGrid[i]) } return originalGrid } let originalGrid = [ [1, 2, 3, 4], [1, 2, 3, 4] ]; console.log(removeColumns(originalGrid, 2))Creo que eso debería solucionar tu problema:
originalGrid[i].length - numColumns, numColumns)en tu ejemplo
let originalGrid = [ [1, 2, 3, 4], [1, 2, 3, 4] ]; console.log(originalGrid.length) //2 console.log(originalGrid[0].length) //4 console.log(originalGrid[1].length) //4Entonces, en el ciclo, no olvides agregar el índice:
console.log(originalGrid[i].splice(originalGrid[i].length - numColumns, numColumns))Escribe una función de filtro. Luego, puede elegir qué columna "sección" incluir.
const originalGrid = [ [1, 2, 3, 4], [1, 2, 3, 4] ]; const filter = (data, from, to) => data.map(a => a.splice(from, to)); console.log(filter(originalGrid, 0, 2));