¡Necesito ayuda! Quiero usar un bucle for sobre una matriz para que pueda buscar títulos, tengo una entrada de formulario ADD TODO simple y lo hice enviar y presionar todos o títulos de todos,

  todos.push({ title: req.body.add_todo_input, complete: false });

Utilizo esta línea para enviar la entrada de los usuarios / todos a la matriz, luego uso EJS para mostrar el resultado en la página web <%= todos.title %>, decidí por qué no hacer un bucle for que recorra la matriz para que puede agregar algunas sentencias if condicionales que verifiquen si alguno de los títulos dentro de la matriz es igual a la misma entrada, y si es así, no presione todos y la consola registre este mensaje (" Error: TODO already exists ").

0
Alex Purcell 13 jul. 2021 a las 05:38

3 respuestas

La mejor respuesta

Puede utilizar el método some() para lograr esto. some devuelve true, cuando encuentra un elemento para el que la función dada devuelve true, de lo contrario, devolverá false.

 const addTodo = (todos, newItem) => {
  const isTodoPresent = todos.some((todo) => todo.title === newItem);
  if (isTodoPresent) {
    console.log(' Error: TODO already exists ');
    return todos;
  }
  return todos.concat({ title: newItem, completed: false });
};

todos = addTodo(todos, req.body.add_todo_input);
0
Dream 13 jul. 2021 a las 03:42

Puede utilizar el método includes() de Array para buscar títulos

const pets = [{ title: 'cat'}, { title: 'dog'}, { title: 'bat'}];

console.log(pets.includes(t=> t.title === 'dog'));
// expected output: true
1
Mark Dreyer 13 jul. 2021 a las 02:49

Descubra que las tareas con un título están presentes en una matriz como la siguiente

let todo = [{title: "abc"}, {title: "def"}]
function addTodo(title) {
  let x = todo.find(item => item.title == title)
  if (x) {
    console.log("todo already present")
  } else {
    todo.push({title: title})
  }
}

Cuando agregue un nuevo elemento a la lista de tareas pendientes, use la función anterior

addTodo("abc")

Ahora "abc" ya existe, por lo que muestra un error en la consola

addTodo("xyz")

Ahora esta vez "xyz" se agregará a la lista de tareas pendientes

1
Gaurav Patil 13 jul. 2021 a las 03:54