2014-02-26 186 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,所以你需要遍歷它分別檢查每一個元素。