i have 2 array objects , want difference between them follows:
array1 = [{"name":"mpcc","id":"tool:mpcc"}, {"name":"app","id":"tool:app"}, {"name":"aii","id":"tool:aii"}, {"name":"vzz","id":"tool:vzz"}, {"name":"usu","id":"tool:usu"}] array2 = [{"name":"app","id":"tool:app"}, {"name":"usu","id":"tool:usu"}] result = [{"name":"mpcc","id":"tool:mpcc"}, {"name":"aii","id":"tool:aii"}, {"name":"vzz","id":"tool:vzz"}]
here code:
$scope.initial = function(base, userdata){ var result = []; angular.foreach( base, function(baseitem) { angular.foreach( userdata, function( useritem ) { if ( baseitem.id !== useritem.id ) { if (result.indexof(baseitem) < 0) { result.push(baseitem); } } }); }); return result; } $scope.initial(array1, array2);
the problem above code dont desired result. please let me know going wrong.
that not related angular.
you this:
var result = array1.filter(function(item1) { (var in array2) { if (item1.id === array2[i].id) { return false; } }; return true; });
or es6 syntax:
var result = array1.filter(i1 => !array2.some(i2 => i1.id === i2.id));