2014-02-26 188 views
1

您好我需要从另一个array.Below删除数组是,我曾试图代码从数组中删除元素从另一个阵列以JavaScript

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 

不知道我要去哪里wrong.Any帮助这将是很大的帮助ul

回答

0

你的说法项目是为一个数组对象,所以你有不止一个值,则必须添加一个额外的循环

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 
} 
使用它像项目[0]

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

如果dummyObj包含

0

与您的代码问题是,item实际上是dummyObj这是一个数组,并且不存在于dummyArray。这就是为什么它不能删除它。

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

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

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

你有几个误区有:

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

应该是

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

还需要通过两个dummyArray和dummyObj循环,因为你的项目变量实际上是dummyObj,所以你需要遍历它分别检查每一个元素。