es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar un array de strings utilizando una cadena filtrada y removerla del array original.

Quiero eliminar algunos elementos del array que contienen la palabra Evil (filterString).

let guests = ["Partner", "Evil Nice Relative 1", "Nice Relative 2", "Evil One", "another evil", "another one", "another evil is here", "strange Evil is here", "someone Nicer", "Ugly Evil Bad"];

const filteredArray = [];
const filterString = "Evil";

function checkEvil() {
    guests.filter((element, index) => {
        if (element.toLowerCase().indexOf(filterString.toLowerCase()) !== -1) {
            console.log(index);
            guests.splice(index,1);
        } else {
            filteredArray.push(element);
        }
    });
    console.log(guests);
}

Aquí está lo que obtengo para el array original (guests):

['Partner', 'Nice Relative 2', 'another evil', 'another one', 'strange Evil is here', 'someone Nicer']

Solo quiero que el array guests se actualice una vez que se haya filtrado la cadena deseada (Evil).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar los elementos que contienen la palabra “Evil” del array “guests”, podemos usar el método “filter()” y el método “splice()”. Primero, definimos un array vacío llamado “filteredArray” para almacenar los elementos que no contienen la palabra “Evil”. Luego, definimos una función llamada “checkEvil()” que itera a través del array “guests” utilizando el método “filter()”. Para cada elemento que contiene la palabra “Evil”, lo eliminamos del array “guests” utilizando el método “splice()”. Para cada elemento que no contiene la palabra “Evil”, lo agregamos al “filteredArray”. Finalmente, registramos el array “guests” actualizado, que solo debería contener elementos que no contengan la palabra “Evil”.

    Aquí está el código:

    let guests = ["Partner", "Evil Nice Relative 1", "Nice Relative 2", "Evil One", "another evil", "another one", "another evil is here", "strange Evil is here", "someone Nicer", "Ugly Evil Bad"];
    const filteredArray = [];
    const filterString = "Evil";
    
    function checkEvil() {
        guests = guests.filter((element) => {
            if (element.toLowerCase().includes(filterString.toLowerCase())) {
                return false; // el elemento contiene "Evil", por lo tanto no se incluye en el array filtrado
            } else {
                filteredArray.push(element); // el elemento no contiene "Evil", por lo tanto se incluye en el array filtrado
                return true;
            }
        });
        console.log(guests); // solo debería registrar elementos que no contengan "Evil"
    }
    
    checkEvil();
    

    La salida debería ser:

    ["Partner", "Nice Relative 2", "another one", "someone Nicer"]
    

Comments are closed.