如何从数组中删除一个特定值? 类似 :

array.remove(value);

制约:我必须使用核心 JavaScript 。 框架不允许 。


当前回答

主要有两种办法:

当您对数组使用删除时要小心。 它有利于删除对象的属性, 但对于数组则不好。 最好对数组使用复数符。

请注意, 当您对数组使用删除时, 您可能会对 anArray. 长度得出错误的结果。 换句话说, 删除将会删除元素, 但不会更新长度属性的值 。

使用删除后,也可以期望在索引编号上出现空洞,例如,最后可能会出现第1、3、4、8、9和11号指数,其长度和之前一样被删除。在这种情况下,所有环形索引都会崩溃,因为指数不再相继。

如果您由于某种原因被迫使用删除, 那么当您需要通过数组循环时, 您应该对每个循环使用。 事实上, 如果可能的话, 总是避免使用已索引过的循环。 这样代码就会更加稳健, 并且不易遇到索引问题 。

其他回答

let removeAnElement = (arr, element)=>{
    let findIndex = -1;
    for (let i = 0; i<(arr.length); i++){
        if(arr[i] === element){
            findIndex = i;
            break;
        }
    }
    if(findIndex == -1){
        return arr;
    }
    for (let i = findIndex; i<(arr.length-1); i++){
        arr[i] =  arr[i+1];
    }
    arr.length -= 1;
    return arr;
}

let array = ['apple', 'ball', 'cat', 'dog', 'egg'];
let removeElement = 'ball';

let tempArr2 = removeAnElement(array, 'dummy');
console.log(tempArr2);
// ['apple', 'cat', 'dog', 'egg']

let tempArr = removeAnElement(array, removeElement);
console.log(tempArr);`enter code here`
// ['apple', 'cat', 'dog', 'egg']

您可以为此创建一个原型。只需通过数组元素和您想要从数组元素中删除的值:

Array. prototype. removeTrounds = 函数( array, val) { { 数组. (raryTrounds, index) {如果 (rayTroups = val) { 数组. splice( index, 1);} 返回数组;} var DummyAray = [1、2、 3、4、 5、 6]; 控制台.log (DummyArray. removeTround (DummyArray, 3) );

要从数组中删除元素, 要从数组中除去元素, 组合、 过滤和删除

每个阵列都有自己的索引,它有助于用索引删除一个特定元素。

拼盘 () 方法

array.splice(index, 1);    

第一个参数是索引,第二个参数是从该索引中删除的元素数量。

因此,单一个元素,我们用1。

删除方法

delete array[index]

过滤 () 方法

如果您想要删除一个在数组中重复的元素, 那么过滤数组 :

removeAll = array.filter(e => e != elem);

Eleem 是您要从数组中删除的元素, 数组是您的数组名称 。

此函数从特定位置的数组中删除元素。

数组. remove( 位置) ;

Array. prototype. remove = 函数 (pos) {此. splice(pos, 1);} var arr = ["a", "b", "c", "d", "e"]; arr. remove(2); // 移除"c" 控制台.log(ar);

如果您不知道要删除的项目的位置, 请使用这个 :

array.erase(element);

Array. prototype. erase = 函数( el) { let p = this. indexof (el); // indexof use prettical equality () { this. spliice (p, 1);}} var ar ar = ["a", "b", "c", "d", "e"; arr.erase (c"); 控制台. log (a) ;

ES1010

该员额总结了从ECMAScript 2019(ES10)时的阵列中去除元素的通用方法。

1. 普通案件

1.1. 使用 .spice () 以值清除矩阵元素

| In-place: Yes | | Removes duplicates: Yes(loop), No(indexOf) | | By value / index: By index |

如果您知道要从数组中删除的值, 您可以使用复数法。 首先, 您必须确定目标项的索引。 然后使用索引作为起始元素, 并删除一个元素 。

// With a 'for' loop
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
for( let i = 0; i < arr.length; i++){
  if ( arr[i] === 5) {
    arr.splice(i, 1);
  }
} // => [1, 2, 3, 4, 6, 7, 8, 9, 0]

// With the .indexOf() method
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
const i = arr.indexOf(5);
arr.splice(i, 1); // => [1, 2, 3, 4, 6, 7, 8, 9, 0]

1.2. 使用. filter () 方法删除矩阵元素

| In-place: No | | Removes duplicates: Yes | | By value / index: By value |

特定元素可以通过提供过滤功能从数组中过滤出来。然后对数组中的每一元素要求此函数。

const value = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => item !== value)
console.log(arr)
// [ 1, 2, 4, 5 ]

1.3. 通过扩展阵列.prototype来删除阵列元素

现职:是/否(取决于执行情况) 删除重复:是/否(取决于执行情况) 按数值/指数:按指数 / 按数值(取决于执行情况)

阵列原型可以通过其他方法扩展,然后在创建的阵列上使用这些方法。

注:从JavaScript标准图书馆(如阵列)扩展物体原型,被一些人视为反型。

// In-place, removes all, by value implementation
Array.prototype.remove = function(item) {
    for (let i = 0; i < this.length; i++) {
        if (this[i] === item) {
            this.splice(i, 1);
        }
    }
}
const arr1 = [1,2,3,1];
arr1.remove(1) // arr1 equals [2,3]

// Non-stationary, removes first, by value implementation
Array.prototype.remove = function(item) {
    const arr = this.slice();
    for (let i = 0; i < this.length; i++) {
        if (arr[i] === item) {
            arr.splice(i, 1);
            return arr;
        }
    }
    return arr;
}
let arr2 = [1,2,3,1];
arr2 = arr2.remove(1) // arr2 equals [2,3,1]

1.4. 使用删除运算符删除队列元素

此处:是 删除重复: 否

使用删除运算符不会影响长度属性。 它也不会影响后续元素的索引。 数组变得稀少, 这是一种巧妙的方式, 表示删除的项目没有被删除, 但却没有定义 。

const arr = [1, 2, 3, 4, 5, 6];
delete arr[4]; // Delete element with index 4
console.log( arr ); // [1, 2, 3, 4, undefined, 6]

删除运算符的设计是为了从 JavaScript 对象中删除属性,而数组则是对象。

1.5. 使用物体功用(ES10)删除阵列元素

| In-place: No | | Removes duplicates: Yes | | By value / index: By value |

从 Entries 引入的 ES10 对象。 可用于在工艺过程中从任何类似 矩阵的物体中创建所需的矩阵和过滤不想要的元素。

const object = [1,2,3,4];
const valueToRemove = 3;
const arr = Object.values(Object.fromEntries(
  Object.entries(object)
  .filter(([ key, val ]) => val !== valueToRemove)
));
console.log(arr); // [1,2,4]

2. 特殊情况

2.1 如果在阵列末端,则删除元素

2.1.1. 改变阵列长度

此处:是 {__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

JavaScript 阵列元素可以通过将长度属性设定为低于当前值的值,从数组的末尾删除。任何指数大于或等于新长度的元素将被删除 。

const arr = [1, 2, 3, 4, 5, 6];
arr.length = 5; // Set length to remove element
console.log( arr ); // [1, 2, 3, 4, 5]

2.1.2. 使用.pop()方法

此处:是 {__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

流行方法删除数组最后一个元素, 返回该元素, 并更新长度属性。 流行方法修改援引该元素的数组, 这意味着与使用删除最后一个元素的方式不同, 将完全删除最后一个元素, 并缩小数组长度 。

const arr = [1, 2, 3, 4, 5, 6];
arr.pop(); // returns 6
console.log( arr ); // [1, 2, 3, 4, 5]

2.2. 如果在阵列开始时,则删除元素

此处:是 {__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

. toft () 方法与流行方法非常相似, 但它删除了 JavaScript 阵列的第一个元素, 而不是最后一个元素。 当元素被删除时, 其余元素会被移到下方 。

const arr = [1, 2, 3, 4];
arr.shift(); // returns 1
console.log( arr ); // [2, 3, 4]

2.3. 删除元素,如果它是阵列中唯一的元素

此处:是_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

最快的技术是设置空数组的数组变量。

let arr = [1];
arr = []; //empty array

2.1.1的替代技术可通过将长度设定为0来使用。