2015-11-07 100 views
5

需要根據另一個陣列過濾一個陣列。是否有一個util功能在敲除?別的我需要去用JavaScript不在另一個陣列中的過濾器陣列

第一:

var obj1 = [{ 
    "visible": "true", 
    "id": 1 
}, { 
    "visible": "true", 
    "id": 2 
}, { 
    "visible": "true", 
    "id": 3 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

二:

var obj2 = [ 2,3] 

現在我需要根據obj2的過濾OBJ1和OBJ1返回的項目不在obj2的omittng 2 ,上述數據爲3(比較對象1 Id

輸出:

[{ 
    "visible": "true", 
    "id": 1 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

回答

10

您可以簡單地運行obj1使用filter並使用indexOfobj2來查看它是否存在。 indexOf如果值不在數組中,則返回-1,並且當回調返回truefilter包括該項目。

var arr = obj1.filter(function(item){ 
    return obj2.indexOf(item.id) === -1; 
}); 
0

要創建輸出數組,創建將通過OBJ1迭代並填充基於迭代每個obj的ID是否存在obj2的一系列新功能。

var obj1 = [{ 
    "visible": "true", 
    "id": 1 
}, { 
    "visible": "true", 
    "id": 2 
}, { 
    "visible": "true", 
    "id": 3 
}, { 
    "Name": "Test3", 
    "id": 4 
}]; 

var obj2 = [2,3] 

var select = function(arr) { 
    var newArr = []; 
    obj1.forEach(function(obj) { 
    if obj2.indexOf(obj.id) !== -1 { 
     newArr.push(obj) 
    }; 
    }; 
    return newArr; 
};