Как удалить определенный элемент из массива в JavaScript? - PullRequest
7275 голосов
/ 24 апреля 2011

У меня есть массив Numbers, и я использую метод .push() для добавления в него элементов.

Есть ли простой способ удалить определенный элемент из массива?Эквивалент чего-то вроде array.remove(number);.

Мне нужно использовать core JavaScript - нет фреймворки разрешены.

Ответы [ 79 ]

0 голосов
/ 22 июля 2018
    Array.prototype.remove = function(start, end) {
        var n = this.slice((end || start) + 1 || this.length);
        return this.length = start < 0 ? this.length + start : start,
        this.push.apply(this, n)
    }

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

z=[0,1,2,3,4,5,6,7,8,9];

newlength=z.remove(2,6);

(8) [0, 1, 7, 8, 9]

z=[0,1,2,3,4,5,6,7,8,9];

newlength=z.remove(-4,-2);

(7) [0, 1, 2, 3, 4, 5, 9]

z=[0,1,2,3,4,5,6,7,8,9];

newlength=z.remove(3,-2);

(4) [0, 1, 2, 9]

0 голосов
/ 02 февраля 2019

Получение прибыли по методу уменьшения следующим образом:

case a) если вам нужно удалить элемент по индексу:

function remove(arr, index) {
  return arr.reduce((prev, x, i) => prev.concat(i !== index ? [x] : []), []);
}

случай b) если вам нужно удалить элемент по значению элемента (int):

function remove(arr, value) {
  return arr.reduce((prev, x, i) => prev.concat(x !== value ? [x] : []), []);
}

Таким образом, мы можем вернуть новый массив (это будет классный функциональный способ - намного лучше, чем использовать push или splice) с удаленным элементом.

0 голосов
/ 28 января 2019

Метод splice () изменяет содержимое массива путем удаления или замены существующих элементов и / или добавления новых элементов.

array.splice (start [, deleteCount [, item1 [, item2 [, ...]]]])

1010 * начать *

Индекс, с которого начинается изменение массива (с началом 0). Если он больше длины массива, фактический начальный индекс будет установлен равным длине массива. Если значение отрицательное, начнется такое количество элементов с конца массива (с началом -1) и будет установлено значение 0, если абсолютное значение больше длины массива.

deleteCount Необязательно

Целое число, указывающее количество удаляемых старых элементов массива. Если deleteCount опущен или если его значение больше, чем array.length - start (то есть, если оно больше, чем число элементов, оставшихся в массиве, начиная с начала), то все элементы от начала до конца из массива будут удалены. Если deleteCount равен 0 или отрицателен, никакие элементы не удаляются. В этом случае вы должны указать хотя бы один новый элемент (см. Ниже).

item1, item2, ... Необязательно

Элементы, добавляемые в массив, начиная с начального индекса. Если вы не укажете никаких элементов, splice () удалит только элементы из массива.

Для получения дополнительной справки пройдите по номеру:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

0 голосов
/ 15 июля 2017

Ответов уже много, но поскольку никто еще не сделал этого с одним вкладышем, я решил показать свой метод. Он использует тот факт, что функция string.split () удалит все указанные символы при создании массива. Вот пример:

var ary = [1,2,3,4,1234,10,4,5,7,3];
out = ary.join("-").split("-4-").join("-").split("-");
console.log(out);

В этом примере все 4 удаляются из массива. Однако важно отметить, что любой массив, содержащий символ «-», вызовет проблемы с этим примером. Короче говоря, это заставит функцию join ("-") неправильно соединить вашу строку. В такой ситуации все строки «-» в приведенном выше фрагменте можно заменить любой строкой, которая не будет использоваться в исходном массиве. Вот еще один пример:

var ary = [1,2,3,4,'-',1234,10,'-',4,5,7,3];
out = ary.join("!@#").split("!@#4!@#").join("!@#").split("!@#");
console.log(out);
0 голосов
/ 01 января 2019
var arr =[1,2,3,4,5];

arr.splice(0,1)

console.log(arr)

Выход [2, 3, 4, 5];

0 голосов
/ 29 октября 2017
var ar1 = [1,2,3,4,5,6,7,8,9]
var toBeRemoved = 2;
ar1.splice( (ar1.length -toBeRemoved) , toBeRemoved);
0 голосов
/ 17 апреля 2019

var array = [1,2,3];
console.log('Array-First',array); // Array-First 1,2,3
array.splice(1,1);
console.log('Array-Second',array); // Array-Second 1,3
0 голосов
/ 13 апреля 2018
let array = [5,5,4,4,2,3,4]    
let newArray = array.join(',').replace('5','').split(',')

Этот пример работает, если вы хотите удалить один текущий элемент.

0 голосов
/ 21 мая 2016
Array.prototype.remove = function(x) {
    var y=this.slice(x+1);
    var z=[];
    for(i=0;i<=x-1;i++) {
        z[z.length] = this[i];
    }

    for(i=0;i<y.length;i++){
        z[z.length]=y[i];
    }

    return z;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...