如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
我必须使用核心核心核心JavaScript。 不允许框架 。
当前回答
你的问题没有说明顺序或不同的价值是否是一项要求。
如果您不关心顺序, 并且容器中的值不会超过一次, 请使用“ Set ” 。 它会更快, 更简洁 。
var aSet = new Set();
aSet.add(1);
aSet.add(2);
aSet.add(3);
aSet.delete(2);
其他回答
var array = [2, 5, 9];
var res = array.splice(array.findIndex(x => x==5), 1);
console.log(res)
使用 Array. findindindex, 我们可以减少代码行数。
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;
}
查找index
使用indexOf
,然后删除该索引splice
.
组合法通过删除现有元素和/或添加新元素来改变数组的内容。
const array = [2, 5, 9];
console.log(array);
const index = array.indexOf(5);
if (index > -1) { // only splice array when item is found
array.splice(index, 1); // 2nd parameter means remove one item only
}
// array = [2, 9]
console.log(array);
第二个参数的第二个参数splice
是要删除的元素数。请注意splice
修改现有数组,并返回含有已删除元素的新数组。
由于完整性的原因,此处为函数。第一个函数只删除一个单一事件(即删除第一个匹配5
调自[2,5,9,1,5,8,5]
),而第二个函数删除所有事件:
function removeItemOnce(arr, value) {
var index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}
function removeItemAll(arr, value) {
var i = 0;
while (i < arr.length) {
if (arr[i] === value) {
arr.splice(i, 1);
} else {
++i;
}
}
return arr;
}
// Usage
console.log(removeItemOnce([2,5,9,1,5,8,5], 5))
console.log(removeItemAll([2,5,9,1,5,8,5], 5))
在类型Script中,这些函数可用类型参数保持类型安全:
function removeItem<T>(arr: Array<T>, value: T): Array<T> {
const index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}
删除上次的元素
arrName.pop();
删除第一个元素
arrName.shift();
从中间删除
arrName.splice(starting index, number of element you wnt to delete);
Example: arrName.splice(1, 1);
删除最后一个元素
arrName.splice(-1);
使用数组索引编号删除
delete arrName[1];
虽然大多数前一个答复都回答了问题,但现在还不清楚为什么slice()
未使用方法。是的,filter()
符合不可改变标准,但采用以下较短的等值方法如何?
const myArray = [1,2,3,4];
现在让我们说我们应该从阵列中删除第二个元素, 我们可以简单地做到:
const newArray = myArray.slice(0, 1).concat(myArray.slice(2, 4));
// [1,3,4]
以这种方式从一个阵列中删除元素的方式, 今天社区强烈鼓励从一个阵列中删除元素, 因为它的简单和不可改变的性质。 一般而言, 导致突变的方法应该避免。 例如, 鼓励您替换push()
与concat()
和splice()
与slice()
.