Quiero eliminar valores en un rango de una matriz. Por ejemplo, removeVals([20, 30, 40, 50, 60, 70], 2, 4) debería devolver el índice [20, 30, 70] . ¿Como puedó resolver esté problema?
array[0, removeStartIndex - 1] a la nueva matriz.array[removeStopIndex + 1, array.lenght - 1] a la nueva matriz. /** * This function removes values from a defined range inside an array. * Input → array[] * Output → array[0, removeStartIndex - 1] + array[removeStopIndex + 1, array.length - 1] * @param {Array<Number>} array * @param {Number} removeStartIndex * @param {Number} removeStopIndex * @returns {Array<Number>} */ function removeVals(array, removeStartIndex, removeStopIndex) { let resultArray = [] if(array.length != 0 && removeStartIndex < removeStopIndex) { if(array.length > removeStartIndex && array.length >= removeStopIndex) { for(let i = 0 ; i < removeStartIndex ; ++i) { resultArray.push(array[i]) } for(let i = removeStopIndex + 1 ; i < array.length ; ++i) { resultArray.push(array[i]) } } } return resultArray; } let array= [20, 30, 40, 50, 60, 70] console.log(removeVals(array, 2, 4))Esto se puede hacer en una sola línea. Si no está familiarizado con las funciones de flecha, esto puede ser un poco confuso, pero de todos modos expondré mi solución.
var removeVals = (array, start, end) => array.filter((item, index) => index < start || index > end); console.log(removeVals([20, 30, 40, 50, 60, 70], 2, 4)) // [20, 30, 70] La función de filter incorporada de JavaScript itera a través de una matriz y pasa cada elemento (y el índice de dicho elemento opcionalmente) a la función que se proporciona. Si el valor de retorno de esa función es verdadero, entonces el elemento permanece en la matriz; de lo contrario, se elimina. La función que pasamos a la función de filter solo devuelve verdadero si el índice del elemento actual en la matriz es menor que el comienzo del rango o mayor que el final del rango, por lo tanto, elimina los elementos que están en el rango.