How do I remove a particular element from an array in JavaScript?

I have an array of numbers, and I'm using the .push() method to add elements to it.

Is there a simple way to remove a specific element from an array? The equivalent of something like array.remove(number);.

I have to use core JavaScript - frameworks are not allowed.

7621
задан Peter Mortensen 1 September 2019 в 10:26
поделиться

9 ответов

Можно расшириться, объект массива определить пользовательское удаляют функцию следующим образом:

let numbers = [1,2,4,4,5,3,45,9];

numbers.delete = function(value){
    var indexOfTarget = this.indexOf(value)

    if(indexOfTarget !== -1)
    {
        console.log("array before delete " + this)
        this.splice(indexOfTarget, 1)
        console.log("array after delete " + this)
    }
    else{
        console.error("element " + value + " not found")
    }
}
numbers.delete(888)
// Expected output:
// element 888 not found
numbers.delete(1)

// Expected output;
// array before delete 1,2,4,4,5,3,45,9
// array after delete 2,4,4,5,3,45,9
0
ответ дан 22 November 2019 в 19:37
поделиться

Не оперативное решение

arr.slice(0,i).concat(arr.slice(i+1));

let arr = [10, 20, 30, 40, 50]

let i = 2 ; // position to remove (starting from 0)
let r = arr.slice(0,i).concat(arr.slice(i+1));

console.log(r);
0
ответ дан 22 November 2019 в 19:37
поделиться

Удалите единственный элемент

function removeSingle(array, element) {
    const index = array.indexOf(element)
    if (index >= 0) {
        array.splice(index, 1)
    }
}

, Удаляют несколько элементов, оперативных

, Это более сложно для обеспечения выполнений алгоритма в O (N) время.

function removeAll(array, element) {
    let newLength = 0
    for (const elem of array) {
        if (elem !== number) {
            array[newLength++] = elem
        }
    }
    array.length = newLength
}

Удаляют несколько элементов, создавая новый объект

array.filter(elem => elem !== number)
0
ответ дан 22 November 2019 в 19:37
поделиться

можно создать индекс со всем примером средств доступа

<div >
</div>

function getIndex($id){
  return (
  this.removeIndex($id)
  alert("This element was removed")
  )
}


function removeIndex(){
   const index = $id; 
   this.accesor.id.splice(index.id) // you can use splice for slice index on accesor id and return with message
}
<div>
<fromList>
  <ul>
{...this.array.map( accesors => {
    <li type="hidden"></li>
    <li>{...accesors}</li>
}) 

}
  </ul>
</fromList>

<form id="form" method="post">
<input  id="{this.accesors.id}">
<input type="submit" callbackforApplySend...getIndex({this.accesors.id}) name="sendendform" value="removeIndex" >
</form>

</div>
0
ответ дан 22 November 2019 в 19:37
поделиться

Я хотел бы предложить удалить одно использование объекта массива, удалите и отфильтруйте:

var arr = [1,2,3,4,5,5,6,7,8,9];
delete arr[5];
arr = arr.filter(function(item){ return item != undefined; });
//result: [1,2,3,4,5,6,7,8,9]

Так, мы можем удалить только один определенный объект массива вместо всех объектов с тем же значением.

0
ответ дан 22 November 2019 в 19:37
поделиться

Большинство ответов здесь дает использование решения -

  1. indexOf и соединяет
  2. , удаляют
  3. фильтр
  4. регулярный for loop

, Хотя все решения должны работать с этими методами, я думал, что мы могли обработка строк использования .

Моменты, которые необходимо отметить, об этом решении -

  1. Это покинет дыры в данных. (мог быть удален с дополнительным фильтром)
  2. Это решение работы для не только примитивные поисковые значения, но также и объекты .

прием к -

  1. stringify, набор входных данных и поисковое значение
  2. заменяют поисковое значение в наборе входных данных с пустой строкой
  3. возврат split данные по разделителю ,.
    remove = (input, value) => {
        const stringVal = JSON.stringify(value);
        const result = JSON.stringify(input)

        return result.replace(stringVal, "").split(",");
    }

А скрипка JS с тестами для объектов и чисел создается здесь - https://jsfiddle.net/4t7zhkce/33 /

Проверка remove метод в скрипке.

1
ответ дан 22 November 2019 в 19:37
поделиться

Удаляют конкретный объект массива

enter image description here

var cars = ["Apple", "Banana", "Mango", "Orange", "Grapes"];

document.getElementById("demo").innerHTML = cars;

for( var i = 0; i < cars.length; i++){ 
   if ( cars[i] === "Banana") {
     cars.splice(i, 1); 
     i--;
   }
}

document.getElementById("demo2").innerHTML =  cars;
p {
  font-size: 20px; 
  padding: 10px; 
  border: 1px dashed tan;
  color: brown;
}
<!DOCTYPE html>
<html>
<body>

<h2>Before</h2>
<p id="demo"></p>
<h2>After</h2>
<p id="demo2"></p>
</body>
</html>
-3
ответ дан 22 November 2019 в 19:37
поделиться

Можно создать прототип для этого. Просто передайте элемент массива и значение, которое Вы хотите удалить из элемента массива

Array.prototype.removeItem = function(array,val){
	array.forEach((arrayItem,index)=>{
		if(arrayItem==val){
			array.splice(index,1);
		}
	});
	return array;
}
var DummyArray = [1,2,3,4,5,6];
console.log(DummyArray.removeItem(DummyArray,3));
0
ответ дан 22 November 2019 в 19:37
поделиться

Найти и удалить конкретную строку из массива строк:

var colors = ["red","blue","car","green"];
var carIndex = colors.indexOf("car");//get  "car" index
//remove car from the colors array
colors.splice(carIndex, 1); // colors = ["red","blue","green"]

Источник: https://www.codegrepper.com/? search_term=remove+a+particular+element+from+array

1
ответ дан 22 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: