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

时间:2014-02-26 09:41:42

标签: javascript arrays

您好我需要从另一个数组中删除该数组.Below是我试过的代码

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

不知道我哪里出错了。对此有任何帮助会很有帮助

4 个答案:

答案 0 :(得分:0)

您的代码存在的问题是,item实际上是dummyObj,它是一个数组,在dummyArray中不存在。这就是它无法删除它的原因。

您可以使用Array.prototype.filter,就像这样

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

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

答案 1 :(得分:0)

查看Underscore.js,一个javascript实用程序带:

http://underscorejs.org/#difference

答案 2 :(得分:0)

你的错误很少:

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

应该是

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

你还需要遍历dummyArray和dummyObj,因为你的 item 变量实际上是dummyObj,所以你需要遍历它来分别检查每个元素。

答案 3 :(得分:0)

你的参数item是一个数组对象,所以你必须像item [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
}