Как удалить элемент из массива в JavaScript?
var arr = [1,2,3,5,6];
Я хочу удалить 1-й элемент массива, чтобы он стал:
var arr = [2,3,5,6];
чтобы расширить этот вопрос, Что делать, если я хочу удалить 2-й элемент массива, чтобы он стал:
var arr = [1,3,5,6];
9 ответов
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]
написал небольшую статью о вставке и удалении элементов в произвольных позициях в массивах 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
не интуитивно понятен, и если у вас есть этот вызов по всему приложению, это просто затрудняет чтение кода.
если вы хотите удалить один или несколько элементов массива зависит от его содержание и/или позиции.
вы можете использовать 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 );
}
}