Prune Array
One possible way to do it.
by simpulton
JavaScript
var buildIndex = function (index, list, property) {
angular.forEach(list, function (item) {
index[item[property]] = item;
});
return index;
};
var pruneArray = function (targetArray, sourceArray, property) {
var tempList = [], tempIndex = [];
tempIndex = buildIndex(tempIndex, sourceArray, 'key');
angular.forEach(targetArray, function (targetItem) {
if(!tempIndex[targetItem[property]]) {
tempList.push(targetItem);
}
});
return tempList;
};
targetArray = [{key:1, name:'test 1'},{key:3, name:'test 3'},{key:5, name:'test 5'}];
sourceArray = [{key:1, name:'test 1'},{key:2, name:'test 2'}, {key:3, name:'test 3'},{key:4, name:'test 4'}];
newArray = pruneArray(targetArray, sourceArray, 'key');
console.log(newArray);