在javascript中从另一个数组中删除数组中的元素

在javascript中从另一个数组中删除数组中的元素,javascript,arrays,Javascript,Arrays,嗨,我需要从另一个数组中删除该数组。下面是我尝试过的代码 var dummyObj = ["item1"]; var dummyArray = [ "item1", "item3", "item2"]; var data1=removeFromArray(dummyArray, dummyObj); console.log("data1"+data1) function removeFromArray(array, item) { while((index = array.indexOf

嗨,我需要从另一个数组中删除该数组。下面是我尝试过的代码

var dummyObj = ["item1"];
var dummyArray = [ "item1", "item3", "item2"];


var data1=removeFromArray(dummyArray, dummyObj);

console.log("data1"+data1)

function removeFromArray(array, item)
{
while((index = array.indexOf(item)) > -1)
array.splice(index,1);
return array
}
下面是我的输出

item1,item3,item2
但所需的输出是

item3,item2

不知道我哪里出错了。任何关于这方面的帮助都会非常有用。

您的代码的问题是,
项实际上是
dummyBJ
,它是一个数组,在
dummyArray
中不存在。这就是为什么它没有将其移除

你可以这样用

dummyArray = dummyArray.filter(function(currentItem) {
    return dummyObj.indexOf(currentItem) === -1;
});

console.log(dummyArray);    // [ 'item3', 'item2' ]

查看Underline.js,这是一个javascript实用工具:


您在这里几乎没有错误:

while((index = array.indexOf(item)) > -1)
应该是

while((index = array.indexOf(item) > -1)

您还需要循环dummyArray和dummyObj,因为您的项实际上是dummyObj,所以您需要循环它来分别检查每个元素。

您的参数项是数组对象,所以必须像项[0]一样使用它

 while((index = array.indexOf(item[0])) > -1)
如果dummyObj包含多个值,则必须添加额外的循环

function removeFromArray(array, item)
{
for(var j=0;j<item.length;j++){
while((index = array.indexOf(item[j])) > -1)
array.splice(index,1);

}
return array
}
函数removeFromArray(数组,项)
{
对于(var j=0;j-1)
阵列拼接(索引1);
}
返回数组
}