Итак, я просмотрел ваш код, и я думаю, что вам сначала нужно сосредоточиться на шаге 3: поиск контактов - если вы хотите удалить контакт, вам все равно нужно сначала найти этот контакт, верно? Итак, давайте сосредоточимся на первой части.
У вас есть эта функция здесь:
function findUser(firstName, surname) {
return database.find(u => database.user.firstName == deleteUserFirstName && database.user.surname == deleteUserSurname);
}
И пока вы на правильном пути, вы просто немного теряете метку. Метод find
принимает функцию в качестве параметра, применяет эту функцию к каждому элементу в массиве и возвращает первый элемент в вашем массиве, который возвращает true
(do c здесь ). Ваша переменная database
является массивом user
объектов, и ваша цель состоит в том, чтобы найти первый объект с указанными именем и фамилией, верно? Итак, вышеприведенная функция должна быть переписана следующим образом:
function findUser(firstName, surname) {
return database.find(user => user.firstName == firstName && user.surname == surname);
}
Теперь эта функция возьмет те значения, которые вы дадите firstName
и surname
, и найдете их в базе данных. Вы можете найти пользователя, шаг 3 завершен! Шаг 2 теперь очень прост - вы можете использовать эту новую и улучшенную функцию, чтобы найти пользователя для удаления:
$('.deleteContact').on('click', function(event) {
event.preventDefault();
var deleteUserFirstName = $('.firstName').val();
var deleteUserSurname = $('.surname').val();
var userToDelete = findUser(deleteUserFirstName, deleteUserSurname);
const index = array.indexOf(userToDelete);
if (index > -1) {
database.splice(index, 1);
}
});
Он находит индекс найденных user
и затем удаляет их из database
. Есть несколько вещей, которые вы можете сделать, чтобы очистить и реорганизовать ваш код (например, я рекомендую не оставлять код в анонимной функции подобным образом, а создать надлежащую функцию для удаления пользователя и вызова этого вместо), но это можно решить один раз это работает, так как кажется, что это для назначения, и у вас заканчивается время.