Javascript 使用排列从数组中删除元素

Javascript 使用排列从数组中删除元素,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个动物数组arr=[‘猫’、‘狗’、‘大象’、‘狮子’、‘老虎’、‘老鼠’] 我想写一个函数remove(['dog','lion'])可以从arr中删除元素,我们可以用es6 spread编写这个函数吗 例如: arr = ['cat','dog','elephant','lion','tiger','mouse'] remove(['cat', 'lion']) arr应改为 arr = ['dog','elephant','tiger','mouse'] 注意:我不想要突变,所以

我有一个动物数组
arr=[‘猫’、‘狗’、‘大象’、‘狮子’、‘老虎’、‘老鼠’]

我想写一个函数
remove(['dog','lion'])
可以从arr中删除元素,我们可以用es6 spread编写这个函数吗

例如:

arr = ['cat','dog','elephant','lion','tiger','mouse']
remove(['cat', 'lion'])
arr应改为

arr = ['dog','elephant','tiger','mouse']

注意:我不想要突变,所以请不要建议突变数组的解决方案。

如果您想传递大量字符串,如
remove('lion','dog')
,可以使用spread。否则我认为spread帮不了你。

不,你帮不了,因为它们不是相邻的。关于扩展和rest语法的进一步讨论已经展开,但即使在这些讨论中,我也不认为会出现一系列不连续的选择

我认为最接近的方法是专门调用前几个,然后在
'lion'
之后使用rest语法:

const arr=[“猫”,“狗”,“大象”,“狮子”,“老虎”,“老鼠];
常数arr2=[arr[1],arr[2],…arr.slice(4)];
控制台日志(arr2)您可以使用扩展运算符从迭代中获取并排除值

顺便说一句,这真的不可取

函数删除(数组、项){
数组[符号.迭代器]=函数*(){
for(让Object.values的值(this)){
如果(!items.includes(value)){
收益值;
}
}
};
}
var数组=[“猫”、“狗”、“大象”、“狮子”、“老虎”、“老鼠”];
移除(数组,['dog','lion']);
log([…数组]);
console.log(数组)

.as控制台包装{max height:100%!important;top:0;}
据我所知,您正在寻找一个使用扩展语法定义参数的函数。 以下是一个例子:
var arr=[“猫”、“狗”、“大象”、“狮子”、“老虎”、“老鼠”];
函数删除(…删除){
toRemove.forEach(项目=>{
var指数=arr.indexOf(项目);
如果(索引!=-1){
阵列拼接(索引1);
}
})
}
删除('dog'、'lion');//或删除(…[‘狗’、‘狮子’);

控制台日志(arr)我不明白所选的答案

const items = ['cat', 'dog', 'elephant', 'lion', 'tiger', 'mouse']
const valuesToRemove = ['dog', 'lion']
const filteredItems = items.filter(item => !valuesToRemove.includes(item))

您可以使用array.filter方法,它将返回带有过滤值的数组

var filterMe = ["cat", "dog", "elephant", "lion", "tiger", "mouse"];
var answer = filterMe.filter((item) => item !== "dog")
                     .filter((item) => item !== "lion");
console.log(answer);

请添加一个例子,你的意思是什么…过滤器不是变异,它返回一个新数组。这个问题和它的初始要求就像要求使用钢锯钉锤子一样。
function remove(x,y){return x.length==0?x:y.includes(x[0])?remove(x.slice(1),y):[x[0],…remove(x.slice(1,y)];}
(很抱歉,如果您看到上面删除了
'cat'
而不是
'dog'
,请点击刷新。记忆不清。)是的,这不是我想要的。但很遗憾知道这无法完成。这需要在您不理解的答案下方添加注释。所选答案解释了询问者想做的事情无法实现的原因!==“dog”&&item!=“狮子”