使用筛选方法从数组中删除值
Removing Values from an Array using the Filter Method
给定一个数组和随后未知数量的参数,如何从初始数组中删除与这些参数具有相同值的所有元素?这就是我目前所拥有的:
function destroyer(arr) {
var arrayOfArgs = [];
var newArray = [];
for (var i = 0; i < arguments.length; i++) {
newArray = arr.filter(function (value) {
return value !== arguments[i + 1];
});
}
return newArray;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
您可以将Array#filter
与箭头函数Array#includes
和rest参数一起使用。
演示
function destroyer(arr, ...remove) {
return arr.filter(e => !remove.includes(e));
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
function destroyer(arr, ...remove) {
return arr.filter(e => !remove.includes(e));
}
var updatedArr = destroyer([1, 2, 3, 1, 2, 3], 2, 3);
console.log(updatedArr);
ES5中的等效代码:
function destroyer(arr) {
var toRemove = [].slice.call(arguments, 1);
return arr.filter(function(e) {
return toRemove.indexOf(e) === -1;
});
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
function destroyer(arr) {
var toRemove = [].slice.call(arguments, 1);
return arr.filter(function (e) {
return toRemove.indexOf(e) === -1;
});
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
使用rest参数指定后续参数,使用带箭头函数的Array.prototype.filter()
筛选arr
,使用Array.prototype.includes()
确定args
是否包含特定项。
function destroyer(arr, ...args) {
return arr.filter(x=> !args.includes(x))
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3))
相关文章:
- Mongoose-在更新中删除数组元素
- 在特定索引处剥离/删除数组中的值
- Framework7:使用swipeout删除数组中的项
- Javascript删除数组中某个位置之后的项
- 通过选中和取消选中复选框来添加和删除数组中的值
- 编写删除数组并添加到列表的函数
- Javascript - 删除数组中的重复值
- 在 Kineticjs 中删除数组中的组
- 如何根据数组内容添加/删除数组中的元素
- 用于删除数组中的零的Javascript函数代码
- Javascript-仅使用pop()方法删除数组中的负值
- 删除数组元素并将它们添加回原来的位置
- 如果一个键匹配,如何删除数组元素
- 无法使用拼接删除数组中的元素
- 如何从ko.computed中删除数组项
- 删除数组中的重复项,为什么此代码不起作用
- 使用另一个数组按索引删除数组中的对象
- 在 jquery 中,如何通过索引[“键”] 或值删除数组元素
- 使用 Lodash 删除数组中的元素
- 按索引删除数组元素