Я пытаюсь написать логику, чтобы удалить элемент пропускания indexArr (который содержит индексы для удаления) способ:Как удалить элементы из массива из разных индексов одним методом?
var a = [0,1,2,3,4,5];
Array.prototype.removeElem = function(indexArr){
\t this.filter(function(value,index,arr){
\t return indexArr.indexOf(index)>-1 ? arr[index] = undefined:false
\t }
\t });
}
a.removeElem([2,3]); //passing indexes in form of array
console.log(a.join('').split('')); //removing undefined values
Как вы можете видеть, я удаление undefined
значения после выполнение метода removeElem()
, но я хочу сделать это в самом методе.
Если вы ожидаете '.removeElem()' мутировать массив это называется на, самое простое решение переписать его с помощью для цикла и '.splice()', так что он может фактически удалить элементы из массива 'this'. Метод '.filter()' не изменяет массив 'this', он создает новый массив; если вы не используете его возвращаемое значение, вы должны использовать '.forEach()'. (Если вы * * использовали свое возвращаемое значение, обратный вызов 'filter()' может быть однострочным, например 'return indexArr.indexOf (index)> - 1;'.) – nnnnnn
не может сделать это с помощью сплайсинга, beacuse splice изменяет массив –
Я сказал: «Если вы ожидаете' .removeElem() 'для мутации массива, на который он вызван», похоже, вы используете его в показанном коде. Если вы хотите '.removeElem()' возвращать массив * new *, то вы можете определенно использовать '.filter()'. – nnnnnn