Задать вопрос
@LoranDeMarcus

Где ошибка в коде JS?

Добрый вечер.
Помогите исправить ошибку в коде. Есть массив объектов. Данные в него записываются через вызов функции в консоли.
Изменение элементов происходит тоже через консоль.
var usersData = [];
var userObj = {id: i = 0, name: '', email: ''};
 
// Вызов функции AddUser("jane", "asd2@gfdgs.re");
 
function AddUser(id, name, email) {
    usersData.push({
        id: i++,
        name: name,
        email: email
    });
}
 
// Вызов функции UpdateUser UpdateUser(1, "clarck", "ead@sad.ewf");
 
function UpdateUser(id, name , email) {
   usersData.forEach(function (item, i, usersData) {
       usersData[i].email = email;
       usersData[i].name = name;
 
   })
}
 
function ShowUsers() {
    console.log(usersData);
}

Пример вызова функции закоментировал в коде.
  • Вопрос задан
  • 169 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Machinez
@Machinez
зачем тебе свойство id в объекте, если ты работаешь с массивом? используй индекс.

чтобы обновить свойства юзера не нужно перебирать весь массив

function UpdateUser(id, name, email) {
   usersData[id].name = name;
   usersData[id].email = email;
}


Ну а если очень нужно работать со свойством id то:
function UpdateUser(id, name, email) {
   usersData.forEach(function (item, i, usersData) {
     if (userData[i].id === id) {
       usersData[i].email = email;
       usersData[i].name = name;
     }
   });
}
Ответ написан
Комментировать
@LoranDeMarcus Автор вопроса
Сам нашел ошибку
var usersData = [];
var userObj = {name: '', email: '',id: i = 0};

function AddUser(name, email, id) {
    usersData.push({
        name: name,
        email: email,
        id: i++
    });
}

function UpdateUser(id, name , email) {
    usersData.forEach(function (item, i, usersData) {
       usersData[id].email = email;
       usersData[id].name = name;
    })
}

function DeleteUser(id) {
    delete usersData[id];
}

function ShowUsers() {
    console.log(usersData);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы