Сделать функцию CRUD DeletebyID(id) Javascript по номеру идентификатора, а не по индексу

avatar
Firsty Ukhti Molyndi
9 августа 2021 в 05:11
136
2
1

Привет, я новичок в изучении javascript. Можете ли вы, ребята, помочь мне.. Вот подробности:

У меня есть массивы:

let todos = [
    {id: 1, todo: "learning javascript"},
    {id: 2, todo: "sleeping"},
    {id: 3, todo: "playing"},
];

Все, что мне нужно сделать, это удалить объект массива, который имеет номер id:2 по его id (точно id/номер), который является "номером" значения объекта. НЕ по индексу. Я хочу сделать функцию CRUD. Но у функции есть только один параметр: ID:

.
DeleteByID(id) ---> by its number id, not by index.

Итак, результат будет таким:

   let todos = [
        {id: 1, todo: "learning javascript"},
        {id: 3, todo: "playing"},
    ];

Я уже пробовал код ниже..

  function deleteByID(id) {
  for(var i in todos){
    if(todos[i].id == id){
      todos[i].splice(i, id);
      break;
    }
  }
}


    console.log("Delete:", deleteByID(2));

Я попробовал свой код, но он не работает. Я пытался гуглить, но у меня до сих пор нет подсказки для решения. Пожалуйста, помогите мне, ребята. Спасибо

Источник
Bravo
9 августа 2021 в 05:13
0

"это не работает"... что он делает вместо того, чтобы работать?

Bravo
9 августа 2021 в 05:14
0

вам понадобится элемент return todos.splice(i, 1); ... в splice 1 в todos в позиции i и вернуть объединенную запись

Firsty Ukhti Molyndi
9 августа 2021 в 05:15
0

мой код неверен. У меня нет никакой подсказки, которая соответствует логике javascript.

Bravo
9 августа 2021 в 05:16
0

да, ваш код неверен ... вы заметили ошибку, которую он выдает в консоли? это было бы полезной информацией ... в любом случае, см. предыдущий комментарий для решения

Firsty Ukhti Molyndi
9 августа 2021 в 05:16
0

я хочу стереть один из объектов строки с идентификатором номер 2. Это именно то, что я хочу для своего кода.

Bravo
9 августа 2021 в 05:17
0

вы заметили сообщение об ошибке в консоли, которое выдает ваш код?

Firsty Ukhti Molyndi
9 августа 2021 в 05:18
0

хорошо, я попробую

Bravo
9 августа 2021 в 05:18
0

вы заметили сообщение об ошибке в консоли, которое выдает ваш код? Я продолжаю говорить это, потому что это отладка 101 ... проверьте наличие ошибок в консоли инструментов разработчика

Firsty Ukhti Molyndi
9 августа 2021 в 05:22
0

когда я пробую следующий код: let todos = [ {id: 1, todo: "изучаем javascript"}, {id: 2, todo: "спим"}, {id: 3, todo: "играем"}, ]; function deleteByID(id) { for(var i in todos){ if(todos[i].id == id){ return todos.splice(i, id); } } вернуть задачи; } console.log("Удалить:", deleteByID(2)); массив идет на стирание объекта с идентификатором 1, а не с идентификатором 2. Удалить: (2)[ { id: 2 todo: sleep } { id: 3 todo: play } ]

Bravo
9 августа 2021 в 05:24
0

вы не читали ответ, который я разместил 3 комментария назад? вы хотите соединить элемент ONE из массива, а не элементы "id"

Ответы (2)

avatar
sikurro
9 августа 2021 в 05:29
1

Может быть что-то вроде этого

let todos = [
    {id: 1, todo: "learning javascript"},
    {id: 2, todo: "sleeping"},
    {id: 3, todo: "playing"},
];

function deleteById(datas, id){
    let index = datas.findIndex(data => data.id === id)
  datas.splice(index, 1)
}

console.log(todos)
deleteById(todos, 2)
console.log(todos)
Bravo
9 августа 2021 в 05:38
0

вы предполагаете современный браузер: p Мне больше нравится ваш ответ, я бы return datas.splice(index, 1)

avatar
Bravo
9 августа 2021 в 05:17
2

Вы хотите соединить задачи, а не задачи[i], и хотите удалить 1 элемент, а не элементы "id"

и вы хотите вернуть объединенный элемент

Вот вам

let todos = [{
    id: 1,
    todo: "learning javascript"
  },
  {
    id: 2,
    todo: "sleeping"
  },
  {
    id: 3,
    todo: "playing"
  },
];

function deleteByID(id) {
  for (var i in todos) {
    if (todos[i].id == id) {
      return todos.splice(i, 1);
    }
  }
}

console.log("Delete:", deleteByID(2));
console.log("Todos:", todos);
Bravo
9 августа 2021 в 05:24
0

не беспокойтесь, это работает - я публикую только те ответы, которые работают: p

Firsty Ukhti Molyndi
9 августа 2021 в 05:38
0

да... я использую визуальный код и jsconsole.com для проверки кода :)

Bravo
9 августа 2021 в 05:39
0

о, я имел в виду консоль инструментов разработчика браузера, которая показывает ошибки в браузере... но, если вы хотите использовать сложные внешние инструменты, которые явно не показывали ошибку в вашем коде, вперед

Firsty Ukhti Molyndi
9 августа 2021 в 05:41
0

Я не использовал dom для печати в инструментах разработчика Google. Я просто использую jsconsole и визуальный код: D

Bravo
9 августа 2021 в 05:43
0

и насколько хорошо это сработало? вы даже не знали, что ваш код выдает ошибку на todos[i].splice(i, id);

Bravo
17 августа 2021 в 06:00
0

этот код не выдает никаких ошибок @FirstyUkhtiMolyndi - я не уверен в уместности или обосновании вашего разъяснения

Firsty Ukhti Molyndi
19 августа 2021 в 04:03
0

Я имею в виду консоль и не показывает именно то, что я хочу. он показывает, что todos[i].splice не является функцией, когда я использую свой код выше.

Firsty Ukhti Molyndi
19 августа 2021 в 04:05
0

вы можете открыть www.jsconsole.com и попробовать мой код

Bravo
19 августа 2021 в 04:15
0

@FirstyUkhtiMolyndi - это правильно, потому что todos[i].splice НЕ является функцией ... todos[i] - это объект, а не массив - так что ваша консоль говорила вам правильно

Firsty Ukhti Molyndi
21 августа 2021 в 07:54
0

это верно спасибо браво за объяснение :)