Удаление определенного пользователя из массива javascript

1

Я смотрел в Интернете, но я не могу Array.splice его, используя Array.splice.

Я храню данные на своей карте следующим образом:

    usersPlaying.push({
        user: user.id,
        current: point
    });

Затем, когда они Array.splice в игре, я хочу удалить их из массива, используя, скорее всего, Array.splice. Как я могу удалить или сплайсировать значение, которое имеет определенный user.id как пользователь, поэтому я знаю, какого пользователя удалить?

Теги:
arrays

2 ответа

1
Лучший ответ

Вы можете использовать .findIndex() чтобы найти индекс элемента массива, который вы пытаетесь сопоставить, где возвращаемое значение из вызова функции передается как первый параметр в .splice() со вторым параметром, установленным в 1

let usersPlaying = [];

let user = {
  id: 123
};

let point = 0;

usersPlaying.push({
  user: user.id,
  current: point
});

console.log(usersPlaying);

usersPlaying.splice(
  usersPlaying.findIndex(({user, current}) => 
    user === user.id && current === point
  )
, 1);

console.log(usersPlaying);
  • 0
    Итак, я могу запустить его как `usersPlaying.findIndex (({user, current}) => user == 32)` Затем он удалит пользователя с идентификатором 32 из списка, где будет 1 если я могу просить?
  • 0
    @MartijnEbbens Да. 1 - параметр deleteCount «Целое число, указывающее количество deleteCount старых элементов массива».
Показать ещё 7 комментариев
1

var users = [{user:1, current:10}, {user:2, current:8}, {user:3, current:12}];

function removeUserById( userId) {
    return users.filter(function(u) {
        return u.user != userId;
    })
};

console.log( removeUserById(2));

//ES6

var removeUserByIdES6 = userId => users.filter( u => u.user != userId); 
console.log( removeUserByIdES6(2));

// This will remove the user from the original array

var removeUser = userId => users.find( (u,i) => u.user == userId && users.splice(i,1)); 
removeUser(2);
console.log( users);

Это приведет к удалению пользователя с определенным идентификатором, не затрагивая исходный массив.

  • 0
    .filter() возвращает новый массив. OP пытается удалить элемент из существующего массива.
  • 0
    Да, я добавил деструктивную версию со splice , которая удалит элемент из исходного массива
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню