Как удалить элемент из массива в JavaScript?

var arr = [1,2,3,5,6];

Я хочу удалить 1-й элемент массива, чтобы он стал:

var arr = [2,3,5,6];

чтобы расширить этот вопрос, Что делать, если я хочу удалить 2-й элемент массива, чтобы он стал:

var arr = [1,3,5,6];

9 ответов


для более гибкого решения, используйте splice()


shift() идеально подходит для вашей ситуации. shift() удаляет первый элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.

array = [1, 2, 3, 4, 5];

array.shift(); // 1

array // [2, 3, 4, 5]

на Array.prototype.shift способ удаляет первый элемент из массива и возвращает его. Он изменяет исходный массив.

var a = [1,2,3]
// [1,2,3]
a.shift()
// 1
a
//[2,3]

arr.slice(begin[,end])

является неразрушающим, сращивание и сдвиг изменит ваш исходный массив


написал небольшую статью о вставке и удалении элементов в произвольных позициях в массивах Javascript.

вот небольшой фрагмент, чтобы удалить элемент из любого положения. Это расширяет класс Array в Javascript и добавляет метод remove(index).

// Remove element at the given index
Array.prototype.remove = function(index) {
    this.splice(index, 1);
}

Итак, чтобы удалить первый элемент в вашем примере, вызовите arr.удалить():

var arr = [1,2,3,5,6];
arr.remove(0);

чтобы удалить второй элемент,

arr.remove(1);

маленькая статьи С вставкой и удалите методы для класса Array.

по существу это ничем не отличается от других ответов с использованием splice, но имя splice не интуитивно понятен, и если у вас есть этот вызов по всему приложению, это просто затрудняет чтение кода.


может, что-то вроде этого:

arr=arr.slice(1);

если вы хотите удалить один или несколько элементов массива зависит от его содержание и/или позиции.

вы можете использовать js filter функции массива.

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter.

удалить первый элемент :

// Not very useful but it works
function removeFirst(element, index) {
  return index > 0;
}
var arr = [1,2,3,5,6].filter(removeFirst); // [2,3,4,5,6]

удалить второй элемент :

function removeSecond(element, index) {
  return index != 1;
}
var arr = [1,2,3,5,6].filter(removeSecond); // [1,3,4,5,6]

удалить нечетные элемент :

function removeOdd(element, index) {
  return !(element % 2);
}
var arr = [1,2,3,5,6].filter(removeOdd); [2,4,6]

вы можете использовать функцию назначения деструктурирования ES6 с оператором rest. Запятая указывает, где вы хотите удалить элемент, а остальные (...arr) оператор, чтобы дать вам оставшиеся элементы массива.

const source = [1,2,3,5,6];

function removeFirst(list) {
   var  [, ...arr] = source;
   return arr;
}
const arr = removeFirst(source);
console.log(arr); // [2, 3, 5, 6]
console.log(source); // [1, 2, 3, 5, 6]

Array.splice() имеет интересное свойство, которое нельзя использовать для удаления первого элемента. Итак, нам нужно прибегнуть к

function removeAnElement( array, index ) {
    index--;

    if ( index === -1 ) {
        return array.shift();
    } else {
        return array.splice( index, 1 );
    }
}